欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

删除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集合的几种方法:

  1. 用foreach遍历
  2. 用Iterator迭代器遍历
  3. 用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