如何通过stream()实现条件分组

通过使用stream()方法和Collectors.groupingBy()方法,可以实现条件分组。

首先,将要处理的数据转换为Stream对象。然后,使用Collectors.groupingBy()方法按照指定的条件进行分组。该方法的参数是一个Classifier,即根据哪个条件进行分组。可以使用一个Predicate来定义分组的条件,也可以使用一个Function来指定分组的依据。

以下是一个示例代码,演示如何使用stream()实现条件分组:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class GroupingExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva", "Frank");

        // 按照名字长度进行分组
        Map<Integer, List<String>> groups = names.stream().collect(Collectors.groupingBy(String::length));

        // 输出结果
        groups.forEach((key, value) -> System.out.println(key + ": " + value));
    }
}

运行以上代码将输出以下结果:

3: [Bob, Eva]
5: [Alice, David, Frank]
7: [Charlie]

在上述示例中,我们使用String::length作为分组的依据,将字符串按照长度进行分组。Collectors.groupingBy()方法返回一个Map,其中的键是分组的依据,值是分组的结果。

你可以根据具体的需求,修改分组的条件和数据类型,实现自己的条件分组功能。