1
我有一個ArrayList
被稱爲塊迭代通過使用迭代器。在我調用當前迭代器的.remove()
方法之前,我必須刪除鏈接到被刪除對象的列表中的另一個對象。按照預期,嘗試執行此操作會導致併發修改異常。你知道我能如何解決這個問題嗎?示例代碼:Java刪除迭代器,刪除同一列表中的另一個元素
for (Iterator<Block> iterator = Blocks.iterator(); iterator.hasNext();) {
Block block = (Block) iterator.next();
if (block.getX() == x && block.getY() == y) {
block.remove(); //This removes another block from this list but throws the error
iterator.remove();
}
}
您是否需要迭代器在第一次匹配後繼續刪除更多元素?或者你只是想刪除第一場比賽? – Joffutt4
只是第一場比賽,它只發生一次。 – Funnythat
你基本上會得到這個異常,因爲你會混淆可能導致難以發現錯誤的迭代器。因此,你必須只用迭代器來完成,或者收集要刪除的塊,然後在循環之後刪除它們(例如,使用'blocks.removeAll(blocksToRemove)')。 - 但是,這聽起來像某種遊戲,所以設計可能不適合,即不使用鏈接塊,您可能更適合使用不同的結構。 – Thomas