List特点以及删除集合元素的三种方式

 List的特点:

(1)有序:输出元素的顺序与添加元素的顺序相同。

(2)可重复(不唯一):可以添加重复元素(2)可重复(不唯一)

(3)当删除一个集合元素时,之后的所有元素的下标会向前补齐。

List删除元素的三种方式:

(1)正向删除:

       一般会用这种方式:

//创建集合
List list=new ArrayList();
//添加元素
 list.add("zyf");
 list.add("qhp");
 list.add("wch");
 list.add("lky");
//开始遍历输出元素
     System.out.println("集合长度:"+list.size());
     for (int i=0;i<list.size();i++){
           list.remove(i);
     }
     System.out.println("集合长度:"+list.size());

但是由于List集合删除一个元素,它之后所有的元素下标都会向前补齐的特点,并且,for循环中的list.size()这时需要重新获取值与i的值也加了1,导致无法全部删除。

最后出现这种情况:

这时要将list.size()写在for循环之外并接受值,再写入for循环中:

 System.out.println("集合长度:"+list.size());
        int size = list.size();
       for (int i=0;i<size;i++){
            list.remove(0);
       }
 System.out.println("集合长度:"+list.size());

(2)逆向删除

  结合上述弊端,我们可以运用另一种删除方式

  逆向删除:

         从集合的最后一个元素开始删除,避免了下标向前补齐的情况。

  代码如下:

System.out.println("集合长度:"+list.size());
for (int i=size-1;i>=0;i--){
    list.remove(i);
}
System.out.println("集合长度:"+list.size());

(3)迭代器删除    

    可能会有人会写成这样:

System.out.println("集合长度:"+list.size());
        Iterator it = list.iterator();
        while (it.hasNext()){
            it.remove();
            it.next();
        }
        System.out.println("集合长度:"+list.size());

但是由于it.hasNext(),这个方法的特点是,不移动下标,只侦测下一元素是否存在,并且返回boolean值;而种写法错误就在它没有先移动下标,导致指针指向的还是空的区域,最后导致报错。

正确方式如下:

System.out.println("集合长度:"+list.size()); 
Iterator it = list.iterator();
       while (it.hasNext()){
            it.next();
            it.remove();
        }
 System.out.println("集合长度:"+list.size());

先用next()方法使下标移动到0,之后再删除。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值