我正在尝试按ConcurrentHashMap<String, LinkedList<String>>
的大小过滤LinkedList<String>
。
换句话说,我想过滤ConcurrentHashMap
中LinkedList<String>
的大小大于4的元素。如何通过Java 8完成它?
答案 0 :(得分:15)
如果您有ConcurrentMap
,则可以通过调用entrySet()
然后stream()
来创建其条目流,并保留值长度大于4的条目通过应用filter
。最后,您可以使用内置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);