2014-01-28 74 views
-2

當嘗試在循環中的列表中添加/刪除某些內容時,Java可能會引發ConcurrentModificationException異常。在谷歌搜索後,我遇到了克服這個問題的方法,比如應用接口迭代器,當你想刪除一個項目時,你需要通過迭代器本身使用remove()函數從列表中刪除它。通過向列表中添加項來避免ConcurrentModificationException異常

但是,在迭代器的方法中不存在add()函數,因此只有在引發異常的情況下添加元素的唯一方法是使用索引/位置循環for (int i = 0; i < list.size(); i++)。但是,對於大型列表,此循環效率非常低,因爲您需要遍歷列表中的所有路徑來獲取所討論項目的索引位置。所以我的問題是除了我提到的可以用來將項目添加到列表的方式之外,還有其他方法嗎?

感謝

+0

有一種簡單的方法,將另一個列表添加到該列表中。使用addAll()方法後。 –

+0

看看http://stackoverflow.com/questions/993025/java-adding-elements-to-a-collection-during-iteration – Batty

回答

3

我給你的建議是要聽ConcurrentModificationException的的意見,並簡單地改變你的解決問題的方法。您在迭代時不應修改列表。