删除Set集合元素时抛出ConcurrentModificationException异常?
程序员文章站
2022-03-10 08:57:30
遍历Set集合的几种方法:用foreach遍历用Iterator迭代器遍历用toArray方法转成数组再遍历(不推荐)删除Set集合中某一个元素:错误的操作示范:public static void main(String[] args) {Set set= new Set<>();set.add("Java");set.add("C++");set.add("Python");// 1. 错误示范①——在foreach循环里删除...
遍历Set集合的几种方法:
- 用foreach遍历
- 用Iterator迭代器遍历
- 用toArray方法转成数组再遍历(不推荐)
删除Set集合中某一个元素:
错误的操作示范:
public static void main(String[] args) {
Set<String> set= new Set<>();
set.add("Java");
set.add("C++");
set.add("Python");
// 1. 错误示范①——在foreach循环里删除元素
for (String str : set){
if(str.equals("Java")){
set.remove(str);
}
}
// 2. 错误示范②——用Itearator迭代器遍历时用Set自带remove方法删除元素
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
if(iterator.next().equals("Java")){
set.remove(str);
}
}
}
上面的两种操作方式在Set集合中的元素大于1个时,会抛出ConcurrentModificationException(并发修改异常)
正确的操作示范:
public static void main(String[] args) {
Set<String> set= new Set<>();
set.add("Java");
set.add("C++");
set.add("Python");
// 正确示范——用Itearator迭代器本身的remove方法删除元素
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
if(iterator.next().equals("Java")){
iterator.remove();
}
}
}
本文地址:https://blog.csdn.net/weixin_44398687/article/details/109807013