Collectors.partitioningBy
时间: 2023-07-17 20:11:14 浏览: 107
`Collectors.partitioningBy`是Java 8中的一个用于分区数据的收集器(Collector)。它接受一个Predicate函数作为参数,将数据分成满足条件和不满足条件的两个部分。返回的结果是一个`Map<Boolean, List<T>>`,其中`Boolean`表示分区的条件,`List<T>`表示满足或不满足条件的元素列表。
下面是一个例子,假设有一个包含整数的列表,我们想将其分成奇数和偶数两个部分:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Map<Boolean, List<Integer>> partitionedNumbers = numbers.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0));
List<Integer> evenNumbers = partitionedNumbers.get(true);
List<Integer> oddNumbers = partitionedNumbers.get(false);
System.out.println("Even numbers: " + evenNumbers); // 输出: [2, 4, 6, 8, 10]
System.out.println("Odd numbers: " + oddNumbers); // 输出: [1, 3, 5, 7, 9]
```
在这个例子中,我们使用`Collectors.partitioningBy`将`numbers`列表分成了奇数和偶数两个部分,并通过`get(true)`和`get(false)`获取了两个结果列表。
希望这个例子能帮到你!如果你有更多问题,请随时提问。
阅读全文