Maison > Questions et réponses > le corps du texte
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)
大家讲道理2017-05-17 10:06:40
foreach
是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的remove
Méthode pour supprimer des éléments.
漂亮男人2017-05-17 10:06:40
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
phpcn_u15822017-05-17 10:06:40
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.
習慣沉默2017-05-17 10:06:40
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