按值过滤ConcurrentHashMap
问题描述:
我想按LinkedList<String>
的大小过滤ConcurrentHashMap<String, LinkedList<String>>
。按值过滤ConcurrentHashMap
换句话说,我想过滤掉ConcurrentHashMap
中LinkedList<String>
的大小大于4的元素。我如何通过Java 8完成它?
答
如果你有ConcurrentMap
,你可以简单地创建其条目的数据流,通过调用entrySet()
然后stream()
,并保持其中的值具有通过施加filter
比4的长度更大的条目。最后,您可以使用内置的Collectors.toConcurrentMap
将其再次收集到ConcurrentMap
中。
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);
+0
感谢一堆,这工作。一个小错误 - Map
地图你所说的“过滤器”的意思去做就地?你的过滤标准是什么?请添加更多信息 –