2014-11-05 26 views
8

Làm cách nào để tôi có thể làm phẳng một số Stream trong số Map s (cùng loại) thành một đơn Map trong Java 8?Luồng bản đồ thành bản đồ

Map<String, Long> toMap(Stream<Map<String, Long>> stream) { 
    return stream. ??? 
} 

Trả lời

14

cú pháp của tôi có thể là một chút tắt, nhưng flatMap nên làm hầu hết công việc cho bạn:

Map<String, Long> toMap(Stream<Map<String, Long>> stream) { 
    return stream.flatMap (map -> map.entrySet().stream()) // this would create a flattened 
                  // Stream of all the map entries 
       .collect(Collectors.toMap(e -> e.getKey(), 
              e -> e.getValue())); // this should collect 
                   // them to a single map 
} 
+0

Dòng() phương pháp là undefined cho các loại đồ dmydlarz

+0

@DariuszMydlarz Tôi cố định câu trả lời. Sử dụng map.entrySet(). Stream() để thay thế. – Eran

+5

Bạn có thể sử dụng tham chiếu phương thức: 'Collectors.toMap (Map.Entry :: getKey, Map.Entry :: getValue)' (hoặc nếu bạn nhập vào lớp lồng nhau: 'Collectors.toMap (Entry :: getKey, Entry :: getValue) ') – Holger

Các vấn đề liên quan