在迭代时删除和添加对象列表

SAR*_*SAR 1 java listiterator

我试图从列表中删除对象,我得到以下异常:

failure:java.util.ConcurrentModificationException null
Run Code Online (Sandbox Code Playgroud)

这就是我尝试从列表中删除对象的方法:

private List<testVO> removeDuplicateEntries(List<testVO> sessionList,List<testVO> dbList){


        for (Iterator<testVO> dbIterator = dbList.listIterator(); dbIterator.hasNext(); ) {
            testVO voDB = dbIterator.next();

            for (Iterator<testVO> sessionIterator = sessionList.iterator(); sessionIterator.hasNext();) {
                testVO voSession = (testVO) sessionIterator.next();

                if(voDB.getQuestionID().intValue() == voSession.getQuestionID().intValue()){
                    //remove the object from sesion list
                    sessionIterator.remove();
                    //Add the object from DB to session list
                    sessionList.add(voDB);
                }

            }

        }

        return sessionList;
    }
Run Code Online (Sandbox Code Playgroud)

我想删除当前的副本sessionList并添加来自的重复项dbList.

Joo*_*gen 6

迭代通过它时,您无法添加到sessionList.

    for (Iterator<testVO> dbIterator = dbList.listIterator(); dbIterator.hasNext(); ) {
        testVO voDB = dbIterator.next();

        List<testVO> toBeAdded = new LinkedList<>();
        for (Iterator<testVO> sessionIterator = sessionList.iterator(); sessionIterator.hasNext();) {
            testVO voSession = (testVO) sessionIterator.next();

            if(voDB.getQuestionID().intValue() == voSession.getQuestionID().intValue()){
                //remove the object from sesion list
                sessionIterator.remove();
                //Add the object from DB to session list
                //CANNOT DO: sessionList.add(voDB);
                toBeAdded.add(voDB);
            }
        }
        Collections.addAll(sessionList, toBeAdded);
    }
Run Code Online (Sandbox Code Playgroud)