为了账号安全,请及时绑定邮箱和手机立即绑定

Map<String, Map<String, String>> - 使用 Stream 选择值的键

Map<String, Map<String, String>> - 使用 Stream 选择值的键

凤凰求蛊 2023-03-02 09:49:43
我有这张地图: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>


查看完整回答
反对 回复 2023-03-02
?
潇湘沐

TA贡献1816条经验 获得超6个赞

收集这些的另一种方法可以是Set:


Set<String> distinct = new LinkedHashSet<>(); // for a predictable order

listMap.values().forEach(e -> distinct.addAll(e.keySet()));


查看完整回答
反对 回复 2023-03-02
  • 2 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信