Java中List循环遍历的时候删除当前对象(自己)
(2012-05-25 17:23:23)
标签:
it |
分类: ★、DayEnglish |
—————————————————————————————————————————————————
—————————————————————————————————————————————————
—————————————————————————————————————————————————
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("two");
for(int i=0;i<list.size();i++){
if(list.get(i).equals("two")){
list.remove(i);
}
}
System.out.println(list);
结果:
—————————————————————————————————————————————————
方法二
if(s.equals("two")){
list.remove(s);
}
at
java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at
java.util.AbstractList$Itr.next(AbstractList.java:343)
at
Test.main(Test.java:22)
—————————————————————————————————————————————————
String s = iter.next();
if(s.equals("two")){
iter.remove();
}
方法一
Java代码
ArrayList<String> list = new
ArrayList<String>();
Java代码
[one, two, two]
—————————————————————————————————————————————————
Java代码
ArrayList<String> list = new
ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("two");
for(String s:list){
}
System.out.println(list);
结果:
Java代码
Exception in thread "main"
java.util.ConcurrentModificationException
—————————————————————————————————————————————————
方法三:
Java代码
ArrayList<String> list = new
ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("two");
Iterator<String> iter =
list.iterator();
while(iter.hasNext()){
}
System.out.println(list);
结果:
Java代码
[one]
结论:
删除还是用迭代器的比较好,其它的都会有问题.
—————————————————————————————————————————————————