我有这张地图:Map<String, Map<String, String>> listMap = new HashMap<>();我想选择所有Keys与Mapmain 中的值不同的内容Map:listMap.value.keyList<String> distinct = listMap.entrySet().stream()
.map(e -> e.getValue()) //Map<String, String>
//Select key of value
.distinct().collect(Collectors.toList());我不知道如何选择keyof valueof listMap。
2 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
您需要flatMap
将所有 inner 的所有键映射Map
到一个Stream
:
List<String> distinct = listMap.values() // Collection<Map<String,String>> .stream() // Stream<Map<String,String>> .flatMap(map -> map.keySet().stream()) // Stream<String> .distinct() // Stream<String> .collect(Collectors.toList()); // List<String>
潇湘沐
TA贡献1816条经验 获得超6个赞
收集这些的另一种方法可以是Set:
Set<String> distinct = new LinkedHashSet<>(); // for a predictable order
listMap.values().forEach(e -> distinct.addAll(e.keySet()));
添加回答
举报
0/150
提交
取消