概述
map的迭代删除,和我们常见的list,set不太一样,不能直接获取Iteraotr对象,提供的删除方法也是单个的,根据key进行删除,如果我们有个需求,将map中满足某些条件的元素删除掉,要怎么做呢?
首先初始化一个HashMap
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
非常不优雅版本
List<String> removeKey = new ArrayList<>();
for (Map.Entry<String, Integer> e: map.entrySet()) {
if (e.getValue() % 2== 0) {
removeKey.add(e.getKey());
}
}
removeKey.forEach(map::remove);
正确姿势版
虽然Map没有迭代,但是它的entrySet有,所以我们可以通过它来实现遍历删除
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
Map.Entry<String, Integer> entry;
while (iterator.hasNext()) {
entry = iterator.next();
if (entry.getValue() % 2 == 0) {
iterator.remove();
}
}
System.out.println(map);
jdk8+ 流方式
map.entrySet().removeIf(entry -> entry.getValue() % 2 == 0);
最后
以上就是专注学姐为你收集整理的Java HashMap遍历删除的全部内容,希望文章能够帮你解决Java HashMap遍历删除所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复