public static void main(String[] args) {
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
a.add("23");
for (String temp : a) {
if ("23".equals(temp)) {
a.remove(temp);
}
}
System.out.println(a);
}
Exception dans le fil "main" java.util.ConcurrentModificationException
à java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
à java.util.ArrayList$Itr.next(ArrayList.java:851)
à wan.ForEach.main(ForEach.java:22)
foreach
是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的remove
Méthode pour supprimer des éléments.La personne ci-dessus a été très claire. Ici, je vais vous proposer deux solutions simples
.1 : Suppression de l'itérateur
2 Copier la liste à parcourir, puis utiliser la liste d'origine.
Bien sûr, la suppression de l'itérateur est recommandée
Ce qui est dit à l'étage est très officiel. Pour parler franchement, la méthode de for(Object obj:list) ne peut pas appeler la méthode delete de list pour supprimer des éléments, sinon une exception sera levée car la structure Iterator doit être déterminée. , il y a donc deux façons de le supprimer, l'une consiste à copier une liste et à supprimer les éléments de l'ancienne liste en parcourant la nouvelle liste, et l'autre consiste à utiliser la boucle for(int i; i<count; i++) Loop, vous pouvez donc le supprimer via le curseur. Faites simplement attention à ne pas franchir les limites de l'indice du tableau.
Lorsque vous comptez les œufs, si quelqu'un met secrètement des œufs dans votre panier ou enlève des œufs, cela vous fera compter de manière incorrecte. À moins que vous n'enleviez ou ne preniez les œufs vous-même, vous pouvez vous rappeler le même principe. au programme