有没有办法将这两个流合并为一个?
这是第一流
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());
基本上代币是一个具有两列族的列表,我的目标是创建一个列表,该列表将基于两列族的限定符 。第一流将第一列族存储到映射中。第二个流遍历第二个族,并使用限定符通过地图获取值并将其存储到新列表中。
答案 0 :(得分:0)
您可以使用双重过滤,然后稍后可以使用平面地图来获取列表:
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()));
您可以内联重新制作流