要实现标号为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