我需要编写一个简单的函数,用于删除包含类Elem
对象的所有条目的List
。我编写了removeAllElements
函数,但如果List<Elem>
的大小大于1,则该函数无法正常工作。
public class Test {
public static void main(String[] args) {
Work w = new Work();
w.addElement(new Elem("a",new Integer[]{1,2,3}));
w.addElement(new Elem("b",new Integer[]{4,5,6}));
w.removeAllElements(); // It does not work for me.
}
}
public class Work {
private List<Elem> elements = new ArrayList<Elem>();
public void addElement(Elem e) {
this.elements.add(e);
}
public void removeAllElements() {
Iterator itr = this.elements.iterator();
while(itr.hasNext()) {
Object e = itr.next();
this.elements.remove(e);
}
}
}
public class Elem {
private String title;
private Integer[] values;
public Elem(String t,Integer v) {
this.title = t;
this.values = v;
}
}
编辑#1 以下是错误信息:
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
next()
之后才使用remove()
,正如我链接的Javadocs清楚地指出的那样。 - amit