ArrayList在遍历的同时无法删除数据

    xiaoxiao2021-03-25  100

    要实现标号为8的倍数的ArrayList数据删除,但是遍历的过程中是无法删除的。 

    for(Hero h:heros){

            int id = Integer.parseInt(h.name.substring(10));         if(id%8 == 0)         heros.remove(h);         }         for (Hero hero : heros) {     System.out.println(hero);

               }

    这样写会报错"main" java.util.ConcurrentModificationException会抛出异常。具体的改进是准备一个临时容器,保存要删除的对象,再删除。

    List<Hero> deleteheros = new ArrayList<Hero>();         for(int i = 1;i<=100;i++){           if(i%8==0)         deleteheros.add(heros.get(i));         }         for(Hero h:deleteheros){         heros.remove(h);         }        //heros.removeAll(deleteheros);        for (Hero hero : heros) { System.out.println(hero);        }

    转载请注明原文地址: https://ju.6miu.com/read-25574.html

    最新回复(0)