我有一个Map流,我怎么能得到具有Map值的Set?
在这里,我已经部分地完成了
Set<String> jcfTargetTables = measure.getConditionMap().values()
.stream()
.map(Condition::getJoinConditionFilter)
.filter(jcf -> jcf!=null)
.map(JoinConditionFilter::getTableMapping);
最后一行给了我一个Stream<Map<String,String>>
,我如何继续获取Set是Map的值?
答案 0 :(得分:6)
由于您在上一次映射中有地图,所以剩下的就是将它转换为这些地图中的值流,然后将它们收集为一组:
Set<String> jcfTargetTables = measure.getConditionMap().values()
.stream()
.map(Condition::getJoinConditionFilter)
.filter(jcf -> jcf!=null)
.map(JoinConditionFilter::getTableMapping)
.flatMap(map -> map.values().stream()).collect(Collectors.toSet());;
答案 1 :(得分:3)
我不确定您目前所拥有的所有步骤是否都是必要的,但在您拥有的基础上,您可以使用flatMap
获取Stream
所有值:
Set<String> jcfTargetTables = measure.getConditionMap().values()
.stream()
.map(Condition::getJoinConditionFilter)
.filter(jcf -> jcf!=null)
.map(JoinConditionFilter::getTableMapping)
.flatMap(m->m.values().stream())
.collect(Collectors.toSet());