可以使用Collectors.groupingBy()方法的第一个参数来指定key的生成方式,将原始的key转换为另一种类型的list。

例如,假设有一个Person类,有name和age两个属性,现在想要按照age分组,并将age转换为一个List,代码如下:

List<Person> personList = Arrays.asList(
        new Person("Tom", 20),
        new Person("Jerry", 20),
        new Person("Lucy", 30),
        new Person("Lily", 30)
);

Map<List<String>, List<Person>> ageGroupMap = personList.stream()
        .collect(Collectors.groupingBy(
                person -> Collections.singletonList(String.valueOf(person.getAge()))
        ));
System.out.println(ageGroupMap);

输出结果为:

{[20]=[Person{name='Tom', age=20}, Person{name='Jerry', age=20}], [30]=[Person{name='Lucy', age=30}, Person{name='Lily', age=30}]}

可以看到,按照age分组后,key被转换为了List,其中只包含一个元素,即该组的age值。

怎么使用java的stream流groupBy的时候将key转为另一种类型的list

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

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