Remarque: je connais la Iterator#remove()méthode.
Dans l'exemple de code suivant, je ne comprends pas pourquoi la méthode List.removein mainlève ConcurrentModificationException, mais pas dans la removeméthode.
public class RemoveListElementDemo {    
    private static final List<Integer> integerList;
    static {
        integerList = new ArrayList<Integer>();
        integerList.add(1);
        integerList.add(2);
        integerList.add(3);
    }
    public static void remove(Integer toRemove) {
        for(Integer integer : integerList) {
            if(integer.equals(toRemove)) {                
                integerList.remove(integer);
            }
        }
    }
    public static void main(String... args) {                
        remove(Integer.valueOf(2));
        Integer toRemove = Integer.valueOf(3);
        for(Integer integer : integerList) {
            if(integer.equals(toRemove)) {                
                integerList.remove(integer);
            }
        }
    }
}ConcurrentModificationExceptionet l'autre non.
                return;dans la boucle.
                
Iterator#remove(). Pourquoi le faites-vous de cette façon?