基于布尔值的 Java 8 过滤器

新手上路,请多包涵

我希望能够根据传入的布尔值应用过滤器。

 public static List<Integer> multiplyNumbers(List<Integer> input, boolean ignoreEven){

    return input.stream()
    .filter(number -> !(number%2==0))
    .map(number -> number*2)
    .collect(Collectors.toList());
}

我想根据 ignoreEven 标志进行过滤步骤。如果为真,则忽略偶数。我该怎么做?我这样做是为了避免代码重复

原文由 Nick01 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 732
2 个回答

对我来说听起来像是一个直截了当的条件。

 .filter(number -> !ignoreEven || (number % 2 != 0))

原文由 Joe C 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果你不想为每个元素检查 ignoreEven ,你可以有条件地定义谓词本身:

 .filter(ignoreEven ? (n -> n % 2 != 0) : (n -> true))

原文由 shmosel 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题