黑马程序员技术交流社区
标题:
使用高级for循环怎样解决List集合删除元素存在的异常
[打印本页]
作者:
wyy666
时间:
2014-6-8 18:51
标题:
使用高级for循环怎样解决List集合删除元素存在的异常
ackage com.itheima;
import java.util.ArrayList;
import java.util.List;
/*
* 第2题:一个ArrayList对象aList中存有若干个字符串元素,
* 现欲遍历该ArrayList对象,删除其中所有值为"abc"的字符串元素,
* 请用代码实现。*/
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> alist=new ArrayList<String>();
alist.add("abc");
alist.add("abd");
alist.add("abe");
alist.add("abc");
alist.add("abc");
alist.add("cba");
//System.out.println(alist);
for(Object element:alist){
if("abc".equals(element)){
alist.remove(element);
}
}
System.out.println(alist);
}
}
/*Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at com.itheima.Test2.main(Test2.java:28)*/
作者:
丁绍然
时间:
2014-6-8 19:47
本帖最后由 丁绍然 于 2014-6-8 19:55 编辑
貌似这个不能用foreach
for(int x=0; x<al.size(); x++){
if("abc".equals(al.get(x))){
al.remove(x);
x--;
}我明白了,equals没问题,就是remove不行,因为element不是list里面的元素了。。是移除不了的
作者:
谭荣强
时间:
2014-6-8 22:12
高级for相当于迭代器,唯一的区别就是:它可以删除元素。
你别想了
作者:
松涛小玮
时间:
2014-6-8 22:13
list集合想删除 只能用迭代器来操作 或者用list特有的迭代器 还能增加和修改
作者:
Kris
时间:
2015-11-16 21:37
还可以用ListIterator迭代器来做,不过是迭代器本身的删除功能与集合无关。
作者:
彼岸花开
时间:
2016-3-18 00:00
谢谢你得分享,真的太赞了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2