我有一个跟随 Person 类
public class Person {
public String name;
public List<Brand> brands;
//Getters
}
和一个List<Person> persons
(可能具有相同的名称)。我需要在 <String, List<Brand>>
的 map 中分组与人的 name
作为键和累积列表 Brands
作为值(value)观。
像这样
Map<String, List<List<String>>> collect = list.stream().collect(
groupingBy(Person::getName, mapping(Person::getBrands, toList()))
);
产生了不希望的结果,我知道为什么。如果在分组过程中这些值可以以某种方式变平?有没有办法用 Streams api 就可以做到这一点?
最佳答案
java 9 将添加 flatMapping
专门针对此类任务的收集器:
list.stream().collect(
groupingBy(
Person::getName,
flatMapping(
p -> p.getBrands().stream(),
toList()
)
)
关于java-8 - 具有值映射函数生成列表的java 8列表分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083939/