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