Java基础教程之HashMap迭代删除使⽤⽅法
前⾔
map的迭代删除,和我们常见的list,set不太⼀样,不能直接获取Iteraotr对象,提供的删除⽅法也是单个的,根据key进⾏删除,如果我们有个需求,将map中满⾜某些条件的元素删除掉,要怎么做呢?
I. Map 迭代删除
迭代删除,在不考虑并发安全的前提下,我们看下可以怎么⽀持
1. ⾮常不优雅版本
我们知道map并不是继承⾃Collection接⼝的,HashMap 也没有提供迭代⽀持,既然没法直接迭代,那我就⽼⽼实的low b版好了
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: Set()) {
if (e.getValue() % 2== 0) {
removeKey.Key());
}
}
removeKey.forEach(map::remove);
上⾯的实现怎么样?并没有什么⽑病
(为啥不直接在遍历中删除?)
2. 正确姿势版
虽然Map没有迭代,但是它的entrySet有啊,所以我们可以通过它来实现遍历删除
java基础教程第三版pdfMap<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
Iterator<Map.Entry<String, Integer>> iterator = Set().iterator();
Map.Entry<String, Integer> entry;
while (iterator.hasNext()) {
entry = ();
if (Value() % 2 == 0) {
}
}
System.out.println(map);
上⾯这个可能是我们经常使⽤的操作姿势了,利⽤迭代器来操作元素
3. 简洁版
到jdk8之后,针对容器提供了很多简洁的操作⽅式,迭代删除这⽅⾯可以说更加简单了
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
4. 其他
尽信书则不如,已上内容,纯属⼀家之⾔,因个⼈能⼒有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论