Java的Collection集合删除元素

  • Java集合删除元素有两种方法,一是调用对象的remove方法,二是调用迭代器的remove方法,二者有很大的区别
  1. 普通集合对象的remove方法
package collection;
import java.util.ArrayList;
import java.util.Collection;

public class CollectionTest05 {
     
    public static void main(String[] args) {
     
        Collection cc = new ArrayList();
        String s1 = new String("hello");
        cc.add(s1);
        String s2 = new String("hello");
        cc.remove(s2); //remove方法底层调用equals方法,相同内容的对象都会被删除
        System.out.println(cc.size()); //0
    }
}
  1. 在使用迭代器遍历过程中必须使用迭代器的remove方法
package collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionTest06 {
     
    public static void main(String[] args) {
     
        //创建集合
        Collection c =new ArrayList();
        //创建迭代器
        Iterator i = c.iterator();
        //此时的迭代器指向的是没有元素的集合
        //集合结构只要改变,迭代器必须重新获取
        //若无重新获取还调用了next()方法:java.util.ConcurrentModificationException

        //添加元素
        c.add(1); //Integer类型自动装箱
        c.add(2);
        c.add(3);
        //创建迭代器
        Iterator it = c.iterator();
        while(it.hasNext()){
     
            Object obj = it.next();
            //删除元素后集合结构发生变化应该重新获取迭代器,但是并没有重新获取所以会出现异常
            //在迭代集合的过程中不能调用对象的remove方法删除元素,不然会出现异常
            //c.remove(obj);

            //使用迭代器删除
            it.remove();//删除的是迭代器当前指向的元素,并且把快照和集合本身中的元素都删除了,好比对快照进行了更新
            System.out.println(obj);
        }
    }
}

你可能感兴趣的:(JavaSE,java)