Tôi làm cách nào để làm như sau với Luồng Java?Luồng Java: nhóm một Danh sách thành Bản đồ của Bản đồ
Hãy nói rằng tôi có các lớp sau:
class Foo {
Bar b;
}
class Bar {
String id;
String date;
}
Tôi có một List<Foo>
và tôi muốn chuyển nó sang một Map <Foo.b.id, Map<Foo.b.date, Foo>
. I.e: nhóm trước tiên theo số Foo.b.id
và sau đó là Foo.b.date
.
Tôi đang phải vật lộn với cách tiếp cận 2 bước sau đây, nhưng điều thứ hai thậm chí không biên dịch:
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()
)
)
);
Cảm ơn trước.
Vâng, bạn có chắc chắn mọi phần tử trong danh sách sẽ là duy nhất không? Nghĩa là, một id và một ngày sẽ cho chính xác một đối tượng 'Foo' duy nhất? – RealSkeptic
Bạn có muốn bản đồ 'Bản đồ' hoặc 'Bản đồ >' ? –
assylias
@Eran bạn đúng, chỉnh sửa :) – mrod