2014-01-28 40 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的的意见,并简单地改变你的解决问题的方法。您在迭代时不应修改列表。