6
Tôi HAVA một danh sách các lớp A
nhưJava 8 danh sách để lồng bản đồ
class A {
private Integer keyA;
private Integer keyB;
private String text;
}
Tôi muốn chuyển aList
để lồng Map
ánh xạ bởi keyA
và keyB
Vì vậy, tôi tạo ra bên dưới mã.
Map<Integer, Map<Integer,List<A>>> aMappedByKeyAAndKeyB = aList.stream()
.collect(Collectors.collectingAndThen(Collectors.groupingBy(A::getKeyA), result -> {
Map<Integer, Map<Integer, List<A>>> nestedMap = new HashMap<Integer, Map<Integer, List<A>>>();
result.entrySet().stream().forEach(e -> {nestedMap.put(e.getKey(), e.getValue().stream().collect(Collectors.groupingBy(A::getKeyB)));});
return nestedMap;}));
Nhưng tôi không thích mã này.
Tôi nghĩ Nếu tôi sử dụng flatMap
, tôi có thể viết mã tốt hơn điều này.
Nhưng tôi không biết Cách sử dụng flatMap
cho hành vi này.