我有一个对象 Foo
引用了 Bar
和 Baz
对象:
public class Foo {
private Bar bar;
private Baz baz;
public Foo(Bar bar, Baz baz) {
this.bar = bar;
this.baz = baz;
}
}
我有一个 List<Foo>
我想转换成 Map
.我希望 key 为 Bar
值为 List<Baz>
.
我可以创建一个 Map
其中 Bar
是键,值是 List<Foo>
:
Map<Bar, List<Foo>> mapBarToFoos = foos.stream().collect(Collectors.groupingBy(Foo::getBar));
我不知道如何进行最后一步并将值 List 转换为 List<Baz>
.是否存在我未看到的值的 lambda 转换?
最佳答案
我觉得你想要
list.stream().collect(groupingBy(Foo::getBar,
mapping(Foo::getBaz, toList())));
其中 getBaz
是转换分组的 Foo
的“下游收集器”,然后是另一个创建列表的收集器。
关于java - 如何使用 Java lambda 将 List<Foo> 收集到 Map<Bar, List<Baz>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732841/