博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java集合类ArrayList循环中删除特定元素
阅读量:4981 次
发布时间:2019-06-12

本文共 852 字,大约阅读时间需要 2 分钟。

在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素。

一种错误的方式:

for(int i = 0 , len= list.size();i

 

上面这种方式会抛出如下异常:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3     at java.util.ArrayList.RangeCheck(Unknown Source)      at java.util.ArrayList.get(Unknown Source)      at ListDemo.main(ListDemo.java:20)

因为你删除了元素,但是未改变迭代的下标,这样当迭代到最后一个的时候就会抛异常咯。

可以对上面的程序进行如下改进:

for(int i = 0 , len= list.size();i

上面的代码就正确了。

下面我们再介绍一种方案:

List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。

Iterator
sListIterator = list.iterator(); while(sListIterator.hasNext()){ String e = sListIterator.next(); if(e.equals("3")){ sListIterator.remove(); } }

上面这种也是正确的,并推荐使用第二种方案。

两种方案实现原理都差多的,第二种只是jdk封装了下。

查看ArrayList源码会发现很多方法内部都是基于iterator接口实现的,所以推荐使用第二种方案。

原文链接:

转载于:https://www.cnblogs.com/azhqiang/p/4586188.html

你可能感兴趣的文章
Perl/Nagios – Can’t locate utils.pm in @INC
查看>>
Javascript 有用参考函数
查看>>
【转】Simulink模型架构指导
查看>>
[转载]java开发中的23种设计模式
查看>>
揭秘:黑客必备的Kali Linux是什么,有哪些弊端?
查看>>
linux系统的远程控制方法——学神IT教育
查看>>
springboot+mybatis报错Invalid bound statement (not found)
查看>>
Linux环境下SolrCloud集群环境搭建关键步骤
查看>>
MongoDB的简单使用
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
SQL中Group By的使用
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
Java回顾之多线程
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
Fireworks基本使用
查看>>