我正在遍历使用迭代器的对象列表。

    List<FormQuestion> questions = regMetadata.getFormQuestions();
    Iterator<FormQuestion> iter = questions.iterator();
    while (iter.hasNext()){
        FormQuestion question = iter.next();
        //if invalid question, delete from list
        if(question.getModuleType().intValue() == -1) {
            iter.remove();
        }
    }


iter.remove()也在从数据库中删除对象。有什么方法只能从此列表(问题)而不是从数据库中删除对象吗?我正在使用Hibernate和MySQL。

最佳答案

我将过滤问题,并将其写到新的List中:

List<FormQuestion> questionsAll = regMetadata.getFormQuestions();
List<FormQuestion> questions = new ArrayList<>();
for (FormQuestion question : questionsAll) {
    // add to the list, unless invalid
    if (question.getModuleType().intValue() != -1) {
        questions.add(question)
    }
}


另外,我使用for-each循环而不是Iterator。您甚至还可以重写它流。

10-07 15:29