加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 按值过滤ConcurrentHashMap

发布时间:2020-12-14 23:56:36 所属栏目:Java 来源:网络整理
导读:我正在尝试过滤ConcurrentHashMap String,LinkedList String通过LinkedList String的大小. 换句话说,我想过滤掉ConcurrentHashMap中的元素,其中LinkedList String的大小.大于4.如何通过Java 8完成它? 解决方法 如果你有一个ConcurrentMap,你可以简单地创建
我正在尝试过滤ConcurrentHashMap< String,LinkedList< String>>通过LinkedList< String>的大小.

换句话说,我想过滤掉ConcurrentHashMap中的元素,其中LinkedList< String>的大小.大于4.如何通过Java 8完成它?

解决方法

如果你有一个ConcurrentMap,你可以简单地创建一个条目流,通过调用 entrySet()然后调用 stream()并通过应用 filter保持值的长度大于4的条目.最后,你可以再次将它收集到ConcurrentMap中内置 Collectors.toConcurrentMap.
ConcurrentMap<String,LinkedList<String>> map = new ConcurrentHashMap<>();

ConcurrentMap<String,LinkedList<String>> result = 
    map.entrySet()
       .stream()
       .filter(e -> e.getValue().size() > 4)
       .collect(Collectors.toConcurrentMap(Map.Entry::getKey,Map.Entry::getValue));

或者,您可以通过修改地图来就地执行此操作

map.values().removeIf(l -> l.size() <= 4);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读