关于循环删除集合元素的问题
老师说不能循环删除集合元素是因为集合长度动态变化,这个怎么理解,虽然每次循环集合长度变化,但是每次新的循环开始,set的值不是也更新了么?感觉就算集合长度动态变化也没什么影响啊?Map集合没有removeAll方法,没办法像Set集合这样先把要删除的元素放在一个集合里,再一起删除,如果Map集合要删除部分元素怎么删除?
40
收起
正在回答
1回答
集合在读取时不允许删除,HashMap是这么设计的,应该是为了数据的一致性。老师的说法回头我们会让老师改成更严谨一些的说法。
可以使用如下的方法实现HashMap数据的部分删除
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.Set; public class Demo { public static void main(String[] args) { HashMap<String,String> hm=new HashMap<String,String>(); hm.put("001", "cat"); hm.put("002", "dog"); hm.put("003", "monkey"); hm.put("004", "horse"); hm.put("005", "panda"); //输出删除数据前的所有key值 System.out.println("删除前的key值:"); Set<String> keySet=hm.keySet(); for(String key:keySet){ System.out.print(key+" "); } System.out.println(); Iterator<Map.Entry<String, String>> it =hm.entrySet().iterator(); while(it.hasNext()){ Entry<String, String> entry=it.next(); String key=entry.getKey(); if(key.equals("002")||key.equals("005")) it.remove(); } //输出删除数据后的所有key值 System.out.println("删除后的key值:"); keySet=hm.keySet(); for(String key:keySet){ System.out.print(key+" "); } } }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星