3

次のコードがあります

public void saveProjects(List<Project> proj) throws DatabaseException {
    for (Project listItems: proj) { // error here

        insertProjects(listItems);
    }
}

private void insertProjects(Project prj) throws DatabaseException {
    commitObjects(prj);
}

上記を実行すると、次の例外が発生しますfor (Project listItems: proj) {

java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449) での java.util.ConcurrentModificationException java.util.AbstractList$Itr.next(AbstractList.java:420) での java.util.ConcurrentModificationException

次の使用またはイテレータを使用してこの問題を解決するにはどうすればよいですか?

編集 1

saveProjects を呼び出しているコード スニペット

projectList.add(proj);
  for (Project persist: projectList) {
       persist.setProjectId("K7890");
       persist.setName(fileName);

          myDAO.saveProjects(projectList);

     }
  projectList.clear();
4

2 に答える 2

1

奇妙に見えますが、私の推測では、リスト ( List<Project> proj) を別のスレッドで繰り返しながら変更していると思いますか?

あなたが私たちに与えたコードでリストを決して変更しないからです。

saveProjectsリストのコピーを使用してメソッドを呼び出すことができprojます。

于 2013-10-27T20:20:02.877 に答える