原文地址:
http://hi.baidu.com/chenqqabcd/item/0af645c583596714515058b3
产生错误原因:迭代集合每次remove后的size都会发生变化,如果迭代基数不根据remove后的size动态调整,则会发生索引越界异常或内容遍历不全等问题,
错误方法1:
ArrayList<String> al = new ArrayList<String>();
al.add("1");
al.add("1");
al.add("1");
al.add("1");
al.add("4");
al.add("1");
al.add("6");
int size = al.size();
//错误处 会抛出索引越界异常
for(int i=0;i<size;i++){
if("1".equals(al.get(i)))
al.remove(i);
}
错误方法2:
ArrayList<String> al = new ArrayList<String>();
al.add("1");
al.add("1");
al.add("1");
al.add("1");
al.add("4");
al.add("1");
al.add("6");
//错误处 会导致内容遍历不完全
for(int i=0;i<al.size();i++){
if("1".equals(al.get(i)))
al.remove(i);
}
正确方法1:
ArrayList<String> al = new ArrayList<String>();
al.add("1");
al.add("1");
al.add("1");
al.add("1");
al.add("4");
al.add("1");
al.add("6");
//正确
Iterator<String> it = al.iterator();
while(it.hasNext()){
if("1".equals(it.next()))
it.remove();
}
正确方法2:
ArrayList<String> al = new ArrayList<String>();
al.add("1");
al.add("1");
al.add("1");
al.add("1");
al.add("4");
al.add("1");
al.add("6");
//正确
for (int i = 0; i < al.size(); i++) {
if ("1".equals(al.get(i))) {
al.remove(i);
i--;
}
}
分享到:
相关推荐
set list ArrayList等java集合类详述
集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试
C# Array和ArrayList,List区别
用java语言编写一个程序实现学员成绩管理,每个学员包括3门课的成绩,从键盘输入学员信息, 包括学号、姓名、三门课成绩,计算出学员的平均成绩,按照学员平均成绩由大到小排序 插入功能:在排序后的学员成绩表中...
主要给大家介绍了关于Java中ArrayList的removeAll方法的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来看看吧。
Arraylist 和 List<T> 在使用的效率是不一样的,选择不同的集合 能使项目的性能有很大的提高!
ArrayList集合工具类
ArrayList集成AbstractList抽象类,实现了List、RandomAccess、Cloneable、java.io.Serializable这四个接口,其中我们可以看到,实现了Cloneable和Serializable接口就代表着ArrayList是支持克隆和序列化的,这里有个...
这篇集合总结一共包括十二节,介绍了一些接口和实现类的底层源码以及基本的增加、删除元素等的操作(包括List、Map、Set接口、ArrayList、Vector、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类)。...
day14-ArrayList集合 1.ArrayList 1.1ArrayList类概述【理解】 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ArrayList集合的特点 底层是数组实现的,长度可以变化 泛型的使用 ...
ArrayList方法介绍及源码分析其实就是一句话,List集合是有序的,根据索引(index)来访问元素,另外,list集合允许有重复的元素 ArrayList是List的实现
经典讲解List和ArrayList和Vector和HashTable和HashMap区别
在jni中操作arraylist对象,然后添加一个int型数据进去
RemoveAt 移除 ArrayList 的指定索引處的元素 Insert 將元素插入 ArrayList 的指定索引處 ArrayList arrlist = new ArrayList(); //..使用 Add方法在 ArrayList中添加元素(添加到ArrayList末尾) arrlist.Add...
详细说明ArrayList类的使用方法,掌握ArrayList的技巧!
day09-ArrayList集合&学生管理系统.pdf
3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五...
主要介绍了java 中ArrayList迭代的两种实现方法的相关资料,Iterator与for语句的结合,需要的朋友可以参考下
此类的返回的迭代器 iterator和listIterator方法是快速失败的 :如果列表在任何时间从结构上修改创建迭代器之后,以任何方式,除了通过迭代器自身的remove或add方法,迭代器都将抛出ConcurrentModificationException...
ArrayList转化为DataTable数据加载转换方便程序的灵活运用!