在Java 8中,可以使用Collectors.groupingBy方法来对流进行分组操作。该方法接受一个分类函数,将流中的元素按照该分类函数的结果进行分组,并返回一个Map对象,其中键是分类函数的结果,值是属于该分组的元素列表。

以下是一个示例代码,演示了如何使用Collectors.groupingBy方法对一个字符串流进行分组操作:

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

public class Main {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
        
        Map<Character, List<String>> groups = words.stream()
                .collect(Collectors.groupingBy(word -> word.charAt(0)));
        
        groups.forEach((key, value) -> System.out.println(key + ": " + value));
    }
}

输出结果为:

a: [apple]
b: [banana]
c: [cherry]
d: [date]
e: [elderberry]

在上述示例中,我们使用Collectors.groupingBy方法将字符串流words按照首字母进行分组。分类函数word -> word.charAt(0)返回字符串的首字母作为分组的键。最终,我们得到一个Map对象groups,其中键是首字母,值是属于该分组的字符串列表。

可以通过groups.forEach方法遍历分组结果,并打印每个分组的键和对应的值

stream流分组

原文地址: https://www.cveoy.top/t/topic/iV7d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录