根据JavaAPI文档,Iterator.hasNext不会抛出
ConcurrentModificationException。
检查后
"January",
"February"您从列表中删除了一个元素。调用
it.hasNext()不会抛出a,
ConcurrentModificationException而是返回false。因此,您的代码干净地退出了。但是,永远不会检查最后一个字符串。如果添加
"April"到列表中,则将按预期方式获得异常。
import java.util.List;import java.util.ArrayList;import java.util.Iterator;public class Main { public static void main(String args[]) { List<String> myList = new ArrayList<String>(); myList.add("January"); myList.add("February"); myList.add("March"); myList.add("April"); Iterator<String> it = myList.iterator(); while(it.hasNext()) { String item = it.next(); System.out.println("Checking: " + item); if("February".equals(item)) { myList.remove(item); } } for (String item : myList) { System.out.println(item); } }}http://ideone.com/VKhHWN



