关于循环删除集合元素的问题
老师说不能循环删除集合元素是因为集合长度动态变化,这个怎么理解,虽然每次循环集合长度变化,但是每次新的循环开始,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 星