gpt4 book ai didi

java - 在 Iterator 中获取 java.util.ConcurrentModificationException

转载 作者:行者123 更新时间:2023-12-01 17:15:19 24 4
gpt4 key购买 nike

我正在尝试使用迭代器迭代自定义对象并将数据添加到该自定义对象中,但是当对象大小为 1 时它可以工作,但是当我添加第二个数据时它给我一个错误:嵌套异常是 java.util .ConcurrentModificationException

我的代码如下:

public List<ValidationObject> _validationObjects = new ArrayList<>();

public void addError(String key, String value){
int size = _validationObjects.size();
if(size==0){
ValidationObject vo = new ValidationObject();
vo.setKey(key);
vo.addLine(value);
_validationObjects.add(vo);
}
else{
Iterator i = _validationObjects.iterator();
while(i.hasNext()){
ValidationObject obj = (ValidationObject)i.next();
if(obj.getKey().equals(key)){
obj.addLine(value);
}else{
ValidationObject vo = new ValidationObject();
vo.setKey(key);
vo.addLine(value);
_validationObjects.add(vo);
}
}
}
}

在 ValidatioObject 类中,我有如下变量:

private List<String> _lines;
private String _key;

我正在调用 addError() 方法,如下所示:

list.addError("Name", "Should not empty");
list.addError("Prefix", "Should not empty");

任何帮助,为什么它会这样。

最佳答案

我认为你需要改变逻辑。添加到迭代器之外的列表

else{
boolean keyFound = false;
Iterator i = _validationObjects.iterator();
while(i.hasNext()){
ValidationObject obj = (ValidationObject)i.next();
if(obj.getKey().equals(key)){
obj.addLine(value);
keyFound = true;
}
}
if(!keyFound){
ValidationObject vo = new ValidationObject();
vo.setKey(key);
vo.addLine(value);
_validationObjects.add(vo);
}
}

关于java - 在 Iterator 中获取 java.util.ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22574887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com