方法一、
ArrayList<String> list = new ArrayList<String>();
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);
执行结果
[one, two, two]
注意: 此种方法可以删除list的数据,但删除后list的数据会自动向前面移动,这样会导致执行的结果和想要达到的效果不一样。
方法二、
ArrayList<String> list2 = new ArrayList<String>();
list2.add("one");
list2.add("two");
list2.add("two");
list2.add("two");
list2.add("two");
for(String s:list2){
if(s.equals("two")){
list2.remove(s);
}
}
System.out.println(list2);
执行结果
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at com.learn.jdk16.util.ConcurrentModification.main(ConcurrentModification.java:40)
ArrayList<String> list3 = new ArrayList<String>();
list3.add("one");
list3.add("two");
list3.add("two");
list3.add("two");
list3.add("two");
Iterator<String> iter = list3.iterator();
while(iter.hasNext()){
String s = iter.next();
if(s.equals("two")){
iter.remove();
}
}
System.out.println(list3);
执行结果
[one]
删除还是用迭代器的比较好,其它的都会有问题.
作者:COOL_CR 发表于2011-7-18 20:50:50
原文链接
阅读:12 评论:0
查看评论