Java流-合并两个流

问题描述

有没有办法将这两个流合并为一个?

这是第一流

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());

基本上代币是一个具有两列族的列表,我的目标是创建一个列表,该列表将基于两列族的限定符 。第一流将第一列族存储到映射中。第二个流遍历第二个族,并使用限定符通过地图获取值并将其存储到新列表中。

解决方法

您可以使用双重过滤,然后稍后可以使用平面地图来获取列表:

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...