当for循环通过Set时,我得到concurrentmodificationexception。 for循环中的代码中没有包含remove,add或replace的部分,这可能导致此异常。下面是一个代码段(我所拥有的简化代码)
Configuration config= new Configuration();
Set<String> events = config.getEvents();
String[] evta=null;
for(String evt: events){
evta=evt.split(";");
//... using the evta for creating new strings but not adding, removing or modifying the events Set<String>.
}
所以,我想知道它可能导致这个异常。有什么想法吗?
答案 0 :(得分:1)
你不得修改events
,同时迭代它;要避免ConcurrentModificationException
您需要使用Iterator
Iterator<String> iter = events.iterator();
while(iter.hasNext())
{
String item = iter.next();
if(item.equals(<what>)) {
iter.remove(); //or split() or whatever.
}
}
请显示更多行以确定哪一行特别导致修改后备阵列,从而抛出ConcurrentModificationException
但使用迭代器很可能会避免它。
答案 1 :(得分:0)
for循环中的代码中没有任何部分包含删除,添加或替换,这可能导致此异常。
好吧,假如只有在某些事情在迭代过程中修改了集合时才抛出异常,那就不是真的了。
您的代码的某些部分正在修改该集合:
然而,这都是猜测。如果您想要一个比&#34更好的答案,请再次查看&#34;,您需要向我们展示问题的MCVE。