我一直收到并发修改异常
String[] permsList = Constants.CUST_MKT_PERMS_FIELDS;
String hiddenFieldVector = new Vector<String>(permsList.length);
Iterator<String> itr = hiddenFieldVector.iterator();
for(int i = 0; i < arrayLength; i++){ //arrayLength is never null or 0
...a lot of code...
String target = fromDatabase(); //this is never null
while(itr.hasNext() && hiddenFieldVector.contains(target)){
hiddenFieldVector.remove(target);
Logger.debug("itr.next() = " + itr.next());
}
...a lot of code...
}
有什么想法吗?
当前解决方案:
while(itr.hasNext() && hiddenFieldVector.contains(target) && (itr.next().equals(target))){
itr.remove();
Logger.debug("itr.next() = " + itr.next());
}
最佳答案
hiddenFieldVector.remove(target);
不要在循环时调用 list
上的 remove
。循环时修改列表会抛出 ConcurrentModificationException
。
使用iterator
并在iterator
而不是list
上调用remove
。
例子:
while(itr.hasNext() && hiddenFieldVector.contains(target)){
itr.remove();
Logger.debug("itr.next() = " + itr.next());
}
关于java - 未知的并发修改异常java使用Iterator和Vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465965/