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

例如,假设有一个 Person 类,有 nameage 两个属性,现在想要按照 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 值。

Java Stream 流 groupBy: 如何将 key 转为 List<String>

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

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