Java Stream 流 groupBy: 如何将 key 转为 List<String>
可以使用 Collectors.groupingBy() 方法的第一个参数来指定 key 的生成方式,将原始的 key 转换为另一种类型的 list。
例如,假设有一个 Person 类,有 name 和 age 两个属性,现在想要按照 age 分组,并将 age 转换为一个 List<String>,代码如下:
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<String>,其中只包含一个元素,即该组的 age 值。
原文地址: https://www.cveoy.top/t/topic/lH7y 著作权归作者所有。请勿转载和采集!