以下方法抛出ConcurrentModificationException,因为它迭代的列表会被修改。我可以使用synchronized来锁定某些东西......在列表被修改或迭代时?
我该怎么做呢?我尝试了几种方法,但似乎没有一种方法可行。例如,锁定“this”不起作用。
public class Deck extends ArrayList<Card> {
...
public void render(Canvas canvas) {
for (Card card : this) {
// Do stuff
}
}
...
}
答案 0 :(得分:0)
您需要使用迭代器及其添加/删除项目的方法,例如:
public class Deck extends ArrayList<Card> {
...
public void render(Canvas canvas) {
Iterator<Card> it = iterator();
while (it.hasNext()) {
Card card = it.next;
// Do stuff
// remove card
it.remove();
// add new card
it.add(new Card());
}
}
...
}