package test.my.chap0302; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class RemoveOfListTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); //1. 遍历删除list里的第一个和最后一个时会报:ConcurrentModificationException for(String s:list){ if(s.equals("c")){ list.remove(s); } } //2.遍历删除list里的元素用索引时不会报ConcurrentModificationException // for(int i=0;i<list.size();i++){ // String s = list.get(i); // if(s.equals("c")){ // list.remove(s); // } // } //3.遍历删除用iterator不会报ConcurrentModificationException Iterator<String> it = list.iterator(); while(it.hasNext()){ String s = it.next(); if(s.equals("b")){ it.remove(); } } System.out.println(list.size()); } } 4.还有一种办法就是新建一个list集合,在删除或增加时先存放在新的list里,然后再删除。 例: List delList = new ArrayList();//用来装需要删除的元素 for(Information ia:list) if(ia.getId()==k){ n++; delList.add(ia); } list.removeAll(delList);//遍历完成后执行删除