黑马程序员技术交流社区
标题:
arraylist集合 处理
[打印本页]
作者:
颜春
时间:
2013-2-27 21:23
标题:
arraylist集合 处理
ArrayList<String> list = new ArrayList<String>();
list.add("123");
list.add("456");
list.add("789");
list.add("963");
int i=0;
for ( String st : list) {
if (st.equals("123")) {
list.remove(st);
}
System.out.println(list.get(i)+ " ");
i++;
}
为什么会报java.util.ConcurrentModificationException 异常 求解
作者:
陈圳
时间:
2013-2-27 21:34
并发修改异常
ArrayList是不同步的.这与在迭代中操作add一样,你在用list取出方法,你同时又在里面改他的元素,导致他不知道自己现在有多少个要出取了.
作者:
张豪杰
时间:
2013-2-27 21:44
这个异常是说,你不能在对一个List进行遍历的时候将其中的元素删除掉
ArrayList<String> list = new ArrayList<String>();
list.add("123");
list.add("456");
list.add("789");
list.add("963");
int i=0;
for ( String st : list) {
if (st.equals("123")) { //你这个循环是在遍历list集合,但是遍历过程中又要删除里面的元素,所以就报错了
list.remove(st);
}
System.out.println(list.get(i)+ " ");
i++;
复制代码
你可以定义一个集合来收集要删除的字符串,等遍历完后再进行删除
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> Dellist = new ArrayList<String>();//在这里定义个集合,用于收集你要删除的元素,等遍历结束后再对收集的元素删除
list.add("123");
list.add("456");
list.add("789");
list.add("963");
int i = 0;
for ( String st : list) {
if (st.equals("123")) {
Dellist.add(st);
i++;
}
}
list.removeAll(Dellist); //这里用removeAll,是因为不确定要删除的集合里的元素有多少个!
System.out.println(list.get(i)+ " ");
复制代码
作者:
舒远
时间:
2013-2-27 21:46
集合迭代过程中如果要对集合本身做添加,删除等操作。请不要用普通的遍历方式,而应使用Iterator迭代器来操作。
作者:
Benwolf0818
时间:
2013-2-27 22:32
可否理解为问题的根源在ArrayList是动态数组造成的计数混乱?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2