📅  最后修改于: 2023-12-03 15:32:00.738000             🧑  作者: Mango
Java中提供了一个收集器 (Collector) 接口用于将Stream流转换为不同类型的集合或映射,其中包括 partitioningBy() 方法,它可以将流中的元素按照一个断言是否满足分为两个集合中。
public static <T> Collector<T, ?, Map<Boolean, List<T>>> partitioningBy(Predicate<? super T> predicate)
它接受一个 Predicate 函数作为参数,将其应用于流中的每个元素,并根据其返回值 (true/false) 将元素分为两个集合。
返回一个最终结果类型为 Map<Boolean, List
以下是 partitioningBy() 方法的一个示例。假设我们有一个字符串列表,我们想将字符串按其长度是否大于等于5分为两个列表中。
List<String> list = Arrays.asList("apple", "banana", "cat", "dog", "elephant");
Map<Boolean, List<String>> result =
list.stream()
.collect(Collectors.partitioningBy(s -> s.length() >= 5));
System.out.println(result);
输出结果为:
{false=[cat, dog], true=[apple, banana, elephant]}
我们可以看到,根据每个字符串的长度,将列表分成了两个列表。