【发布时间】:2015-05-18 07:16:58
【问题描述】:
List<Integer> integers = Arrays.asList(1, 2, 3, 5, 6, 8, 9, 10);
integers.stream().filter((integer) -> integer % 2 == 0).collect(Collectors.toList());
如上图integers是一个List,我们只需要从中过滤偶数。我可以通过使用.filter() 方法来实现。但是,有没有可能使用.reduce() 方法实现相同的目标。希望,.reduce() 方法通过执行给定的 BynaryOperation 过滤掉所有其他元素并返回缩减列表。
如果我对.reduce() 方法的理解不正确,请告诉我这个方法到底是做什么的。
【问题讨论】:
-
我不明白。你有什么要求?您想减少
List中的所有偶数吗?您可以链接filter和reduce,因为filter是一个中间操作。 -
是的,以某种方式可以做到这一点,但
reduce是错误的工具!按照您的建议使用filter。 -
我只想在reduce()方法的帮助下从列表中删除所有奇数并返回偶数列表。
-
@ParameshKorrakuti 当需要螺丝刀时,您正在尝试使用锤子。不要让事情变得更困难和潜在的错误(例如:当你的流并行时)。只需使用
filter和collect... -
请问您选择
reduce而不是collect有什么好处?还是只是一种心理锻炼?
标签: java filter lambda java-8 reduce