我该如何使用Java Streams进行以下操作?
假设我有以下类:
class Foo {
Bar b;
}
class Bar {
String id;
String date;
}
我有一个List<Foo>
,想把它转换成Map <Foo.b.id, Map<Foo.b.date, Foo>
。也就是说:首先按Foo.b.id
分组,然后按Foo.b.date
分组。
我尝试了以下两步骤的解决方案,但第二步甚至无法编译:
Map<String, List<Foo>> groupById =
myList
.stream()
.collect(
Collectors.groupingBy(
foo -> foo.getBar().getId()
)
);
Map<String, Map<String, Foo>> output = groupById.entrySet()
.stream()
.map(
entry -> entry.getKey(),
entry -> entry.getValue()
.stream()
.collect(
Collectors.groupingBy(
bar -> bar.getDate()
)
)
);
提前致谢。
Foo
对象吗? - RealSkepticMap <Foo.b.id, Map<Foo.b.date, Foo.b>
还是一个Map <Foo.b.id, Map<Foo.b.date, List<Foo.b>>
? - assylias