有没有办法在一次处理中同时收集匹配和不匹配的流元素? 举个例子:
final List<Integer> numbers = Arrays.asList( 1, 2, 3, 4, 5 );
final List<Integer> even = numbers.stream().filter( n -> n % 2 == 0 ).collect( Collectors.toList() );
final List<Integer> odd = numbers.stream().filter( n -> n % 2 != 0 ).collect( Collectors.toList() );
有没有办法避免两次遍历数字列表?像“匹配的收集器和不匹配的收集器”之类的东西?
最佳答案
你可以这样做,
final Map<Boolean, List<Integer>> parityMap = numbers.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0));
final List<Integer> even = parityMap.get(true);
final List<Integer> odd = parityMap.get(false);
关于java - 在一个流处理中收集匹配和不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296841/