原文网址:http://javag.iteye.com/blog/403097
方法一
- 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);  
 
 
 结果:
 方法二
- 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){  
 
-     if(s.equals("two")){  
 
-         list.remove(s);  
 
-     }  
 
- }  
 
- System.out.println(list);  
 
 
 
结果:
- 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 Test.main(Test.java:22)  
 
 
 
方法三:
- 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()){  
 
-     String s = iter.next();  
 
-     if(s.equals("two")){  
 
-         iter.remove();  
 
-     }  
 
- }  
 
- System.out.println(list);  
 
 
结果:
 
结论:
删除还是用迭代器的比较好,其它的都会有问题.
【转】ArrayList遍历的同时删除----不错
原文:http://www.cnblogs.com/wi100sh/p/4491964.html