Java集合类ArrayList删除特定元素(java基础) java.lang.IndexOutOfBoundsException:
来源:互联网 发布:周扬青淘宝店 卖什么 编辑:程序博客网 时间:2024/05/22 09:42
在这次的项目开发中遇到动态的删除ArrayList中的一些元素,假如我们有如下的一个List:
List<Integer> list = new LinkedList<Integer>();list.add(4);list.add(2);list.add(1);list.add(1);list.add(2);
- 一种错误的方式:
for(int i = 0, len = list.size(); i < len; i++){ if(list.get(i) == 1) { list.remove(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)
因为你删除了元素,但是未改变迭代的下标,这样当迭代到最后一个的时候就会抛异常。
- 正确的做法是:
for(int i = 0, len = list.size(); i < len; i++){ if(list.get(i) == 1){ list.remove(i); len--; i--; } }
- 更好的一个做法
List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。所以我们还有一个更好的做法是:
Iterator<Integer> iterator = list.iterator(); while(iterator.hasNext()){ int i = iterator.next(); if(i == 1){ iterator.remove(); } }
0 0
- Java集合类ArrayList删除特定元素(java基础) java.lang.IndexOutOfBoundsException:
- Java集合类ArrayList删除特定元素
- Java集合类ArrayList删除特定元素
- Java集合类ArrayList删除特定元素
- Java集合类ArrayList循环中删除特定元素
- Java集合类ArrayList循环中删除特定元素
- Java集合类ArrayList循环中删除特定元素
- Java集合类ArrayList循环中删除特定元素
- Java集合类ArrayList循环中删除特定元素
- Java集合类ArrayList循环中删除特定元素
- Java ArrayList删除特定元素的方法
- java.lang.IndexOutOfBoundsException
- java.lang.IndexOutOfBoundsException错误
- java 集合之ArrayList集合元素重复删除
- Java基础-----集合Arraylist
- java.lang.IndexOutOfBoundsException 错误解决
- java.lang.IndexOutOfBoundsException,数组越界
- java.lang.IndexOutOfBoundsException 错误解决
- [水]ZOJ1797
- 关于Java中this和super的用法介绍和区别
- Android系统自适应设备、子适应屏幕。
- R script 传递参数
- hdu 4941 Magical Forest(STL之map应用)2014多校训练第7场
- Java集合类ArrayList删除特定元素(java基础) java.lang.IndexOutOfBoundsException:
- 在Windows Server 2012 中安装 .NET 3.5 Framework
- spring p标签是spring内置
- 线段树
- iOS7中容易被忽视的新特性(摘自cocoaChina)
- 源码下载回来是.git文件夹时处理方式
- linux awk命令详解
- Unsupported major.minor version 50.0
- [水]ZOJ1763