@Test public void testListCur(){ List<String> li=new ArrayList<String>(); for(int i=0;i<10;i++){ li.add("str"+i); } for(String st:li){ if(st.equalsIgnoreCase("str3")) li.remove("str3"); } System.out.println(li); }
当我运行此代码时,我将抛出ConcurrentModificationException。
当我从列表中删除指定的元素时,列表似乎不知道其大小已更改。
我想知道这是否是集合和删除元素的常见问题?
我相信这是Iterator.remove()方法背后的目的,是能够在迭代时从集合中删除一个元素。
例如:
Iterator<String> iter = li.iterator(); while(iter.hasNext()){ if(iter.next().equalsIgnoreCase("str3")) iter.remove(); }