当前位置: 首页 > 面试题库 >

如何解决此错误java.util.ConcurrentModificationException

凤伟泽
2023-03-14
问题内容

我在下一行出现错误。我正在做添加到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);


 类似资料:
  • 错误-mssql08(系统找不到指定的文件)java.io.FileNotFoundException:mssql08(系统找不到指定的文件)在java.io.FileInputStream.Open0(本机方法)

  • org.gradle.execution.multipleBuildFailures:生成完成,失败1次。 在org.gradle.initialization.defaultgradlelauncher$executeTasks.run(DefaultG radlelauncher.java:358)

  • 我是android studio的新手,我不明白为什么我的应用程序在开始使用seekbar时会崩溃。谁能帮帮我吗? 公共类MainActivity扩展了AppCompatActivity{SeekBar SeekBar;//声明SeekBar对象TextView TextView,textView2;ListView simpleListview;//声明SeekBar int离散的成员变量;in

  • 问题内容: 我写了一个控制台应用程序就跑,然后。这很好。 然后,我创建了一个包,并将helloworld.java移入其中(包导入语句正确生成为)。然后我运行了它,效果也很好,并正确生成了类。 但是,当我从控制台运行时,它引发了“找不到类”错误。 请谁能告诉我这是什么问题? 问题答案: 尝试跑步 其中ABSOLUTE_PATH指向类文件以及程序包所在的目录。说它是生成类文件的目录,以及与源文件相同

  • XML: 我的错误: 清单合并失败:属性application@appComponentFactory 建筑gradle(模块:应用程序)代码:

  • 我是python的新手。我使用anaconda Jupiter笔记本,我尝试使用一个名为weka的模块,我用pip安装了它。但现在我发现了这个错误: 文件“C:\ProgramData\Anaconda3\lib\site packages\IPython\core\interactiveshell.py”,第2961行,运行代码exec(代码obj、self.user、self.user) Fi