Maison  >  Questions et réponses  >  le corps du texte

java - Pourquoi la suppression du dernier élément de foreach génère-t-elle une erreur?

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)

PHP中文网PHP中文网2736 Il y a quelques jours878

répondre à tous(5)je répondrai

  • 大家讲道理

    大家讲道理2017-05-17 10:06:40

    foreach是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的removeMéthode pour supprimer des éléments.

    répondre
    0
  • 迷茫

    迷茫2017-05-17 10:06:40

    http://tyrion.iteye.com/blog/...

    répondre
    0
  • 漂亮男人

    漂亮男人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

    .

    répondre
    0
  • phpcn_u1582

    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.

    répondre
    0
  • 習慣沉默

    習慣沉默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

    répondre
    0
  • Annulerrépondre