gpt4 book ai didi

java - 我该如何修复此错误 java.util.ConcurrentModificationException

转载 作者:搜寻专家 更新时间:2023-10-31 08:09:15 24 4
gpt4 key购买 nike

我在下一行收到错误。我正在做添加到 jsonarray 的过程。请帮助我。

jsonArr=new JSONArray();
if(req.getSession().getAttribute("userses")!=null){
String name=(req.getParameter("name")==null?"":to_EnglishName(req.getParameter("name").toUpperCase()));
if(!name.equals("")){
for(Book c:GlobalObjects.bookList){
if(c.getBookName().startsWith(name)){
jsonObjec=new JSONObject();
jsonObjec.put("label",c.getBookName());
jsonObjec.put("value", c.getId());
jsonArr.add(jsonObjec);//java.util.ConcurrentModificationException
}
}
}
}
jsonArr.write(res.getWriter());

最佳答案

这是我在重新编程时经常遇到的错误。此异常的原因或细节非常清楚。迭代时不允许修改集合(您正在添加新元素)。至少语法 for 不支持这样做。

要解决您的问题,有两种我认为很简单的方法。

1).与其使用 for 语句循环,更好的方法是使用迭代器来避免 ConcurrentModificationException。

    Iterator<Book> iterator = bookList.iterator();
while(iterator.hasNext()){
Book c = iterator.next();
if(c.getBookName().startsWith(name)){
jsonObjec=new JSONObject();
jsonObjec.put("label",c.getBookName());
jsonObjec.put("value", c.getId());
jsonArr.add(jsonObjec);
}
}

2).在循环它时,不要添加它。

     List list = new ArrayList<>();
for(Book c:GlobalObjects.bookList){
if(c.getBookName().startsWith(name)){
jsonObjec=new JSONObject();
jsonObjec.put("label",c.getBookName());
jsonObjec.put("value", c.getId());
list.add(jsonObjec);//java.util.ConcurrentModificationException
}
}
jsonArr.addAll(list);

关于java - 我该如何修复此错误 java.util.ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407621/

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