有关ArrayList的元素删除

在进行实验二过程中,涉及到在一个ArrayList中进行元素的删除。从最直观的角度来看,此处可以这样写。

for(i = 0; i < list.size(); i++) {
	list.remove(i);
}

从直观角度看来,这种删除方法没有问题,但是在以如下例子进行试验后发现出现问题。

public class test {
	public static void main(String args[]) {
		ArrayList<String> list = new ArrayList<String>();
		int i;
		list.add("111");
		list.add("222");
		list.add("333");
		list.add("444");
		list.add("555");
		for(i=0; i < list.size(); i++) {
			list.remove(i);
		}
		for(i=0; i < list.size(); i++) {
			System.out.println(list.get(i) );
		}
	}
}

从字面意思看来,这段代码将所有的list中元素全部删除,但是实际运行后得到结果如下。

其中元素并没有被完全删除,从而说明了这种删除方法并不合理。

实际上在进行删除操作的时候,由于删除后删除位会前移,导致访问的编号错位,在进行删除操作的时候会导致不能删掉想删除的元素。

正确处理方式是使用迭代器删除

public class test {
	public static void main(String args[]) {
		ArrayList<String> list = new ArrayList<String>();
		Itorator it = list.itorator();
		list.add("111");
		list.add("222");
		list.add("333");
		list.add("444");
		list.add("555");
		while(it.hasnext()){
            it.next();
            it.remove();
        }
	}
}

使用迭代器遍历并删除才能正确实现删除元素。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值