[英]Java 8 streams merge inner stream result to stream above
也許這是變態,但我想在上面的級別上合並內部流的結果。
例如,我們有一些帶有數據的復雜地圖:
Map<String, List<Map<String, Object>>> dataMap
我需要收集所有對象列表。 現在我這樣做:
Set<Object> segmentIds = new HashSet<>();
dataMap.values().forEach(maps -> maps.forEach(map -> segmentIds.add(map.get("object"))));
但它不是那么漂亮的方式。 但我無法理解如何將數據從內循環傳輸到外部以最終收集它們。
沒有任何外部物體可以做到嗎?
怎么樣:
Set<Object> collect = dataMap.values()
.stream()
.flatMap(Collection::stream)
.map(map -> map.get("object"))
.collect(Collectors.toSet());
您必須使用Stream-API的flatMap
。
List<Object> allObjects = dataMap.values().stream()
.flatMap(l -> l.stream())
.flatMap(m -> m.values().stream())
.collect(Collectors.toList())
代碼未經過測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.