g0c*_*33k 7 java filtering concurrenthashmap java-8 java-stream
我试图ConcurrentHashMap<String, LinkedList<String>>按照大小过滤LinkedList<String>.
换句话说,我想过滤掉ConcurrentHashMap大小LinkedList<String>大于4的元素.如何通过Java 8完成它?
Tun*_*aki 15
如果你有一个ConcurrentMap,你可以通过调用entrySet()然后stream()通过应用a来保持条目的长度大于4的条目,只需创建其条目流filter.最后,您可以将其再次收集到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));
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过修改地图来就地执行此操作
map.values().removeIf(l -> l.size() <= 4);
Run Code Online (Sandbox Code Playgroud)