java – 按值过滤ConcurrentHashMap

我正在尝试过滤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);

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...