Why am I not getting a java.util.ConcurrentModificationException in this example?

后端 未结 10 2219
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-22 07:59

Note: I am aware of the Iterator#remove() method.

In the following code sample, I don\'t understand why the List.remove in main

10条回答
  •  野性不改
    2020-11-22 08:31

    This runs fine on Java 1.6

    ~ % javac RemoveListElementDemo.java
    ~ % java RemoveListElementDemo
    ~ % cat RemoveListElementDemo.java

    import java.util.*;
    public class RemoveListElementDemo {    
        private static final List integerList;
    
        static {
            integerList = new ArrayList();
            integerList.add(1);
            integerList.add(2);
            integerList.add(3);
        }
    
        public static void remove(Integer remove) {
            for(Integer integer : integerList) {
                if(integer.equals(remove)) {                
                    integerList.remove(integer);
                }
            }
        }
    
        public static void main(String... args) {                
            remove(Integer.valueOf(2));
    
            Integer remove = Integer.valueOf(3);
            for(Integer integer : integerList) {
                if(integer.equals(remove)) {                
                    integerList.remove(integer);
                }
            }
        }
    }
    

    ~ %

提交回复
热议问题