我试图从 Arraylist 中删除一个特定的元素,它抛出一个 ConcurrentModificationException
ArrayList<String> ar = new ArrayList<String>();
ar.add("a");
ar.add("b");
ar.add("c");
ar.add("a");
ar.add("e");
for(String st: ar){
System.out.println("st="+st);
if(st.equals("a")){
ar.remove(st);
}
}
任何评论,我做错了什么?
最佳答案
仅在使用 Iterator.remove()
进行迭代时从数组中删除一个元素。
行 for(String st: ar) {
有点误导。您实际上是在幕后创建一个用于此迭代的迭代器。如果需要从迭代中删除元素,则需要显式使用迭代器,以便可以调用 iterator.remove()
。
ArrayList<String> ar = new ArrayList<String>();
ar.add("a");
ar.add("b");
ar.add("c");
ar.add("a");
ar.add("e");
Iterator<String> it = ar.iterator();
while (it.hasNext()) {
String st = it.next();
System.out.println("st="+st);
if (st.equals("a")) {
it.remove();
}
}
关于java - 为什么当我尝试删除元素时此 ArrayList 会抛出 ConcurrentModificationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469210/