public class ListTest {

    @Test
    public void test() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");

        
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()) {
            String item = iterator.next();
            if ("2".equals(item)) {
                iterator.remove();
            }
        }
    }

 

以上是正确写法

 

以下是错误写法

public class ListTest {

    @Test
    public void test() {
        List<String> list = new ArrayList<String>();
        list.add("1");
        list.add("2");
        for (String item : list) {
            if ("2".equals(item)) {
               list.remove(item);
            }
       }


}
因为程序调用如下,再next方法后,会做check检查是否修改过

#java面试# #java基础#_java基础