簡體   English   中英

Java 8流將內部流結果合並到上面的流中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM