簡體   English   中英

Java Stream - 合並兩個流

[英]Java Stream - Combine Two Streams

有沒有辦法可以將這兩個流合並為一個?

這是第一個流

Map<String, String> rawMapping = tokens.getColumnFamilies().stream()
            .filter(family -> family.getName().equals("first_family"))
            .findAny()
            .map(columns -> columns.getColumns().stream()).get()
            .collect(Collectors.toMap(
                Column::getPrefix,
                Column::getValue
            ));

第二個流

List<Token> tokenValues = tokens.getColumnFamilies().stream()
            .filter(family -> family.getName().equals("second_family"))
            .findAny()
            .map(columns -> columns.getColumns().stream()).get()
            .map(token -> {
                return Token.builder()
                    .qualifier(token.getPrefix())
                    .raw(rawMapping.get(token.getPrefix()))
                    .token(token.getValue())
                    .build();
            })
            .collect(Collectors.toList());

基本上標記是一個具有兩個列族的列表,我的目標是創建一個列表,該列表將根據它們的qualifier組合兩列族的值。 第一個流將第一個列族存儲到映射中。 第二個流正在遍歷第二個系列並使用限定符通過映射獲取值並將其存儲到新列表中。

您可以使用雙重過濾,然后您可以使用平面地圖然后獲取列表:

Map<String, String> tokenvalues =    tokens.getColumnFamilies().stream()
          .filter(family -> family.getName().equals("first_family"))
           .filter(family -> family.getName().equals("second_family"))
          .map(columns -> columns.getColumns().stream())
       //etc..
.stream()
      .flatMap(Collection::stream)
      .collect(Collectors.toList()));

你可以內聯重新制作一個流

https://www.baeldung.com/java-difference-map-and-flatmap

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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