通过Iterator从ArrayList中删除元素

NGi*_*Gix 5 java

我想查看输入ArrayList并删除元素,如果找到的话,我想通过最简单的方法Iterator,这是我的代码:

    for (Iterator<Student> it = school.iterator(); it.hasNext();){
        if (it.equals(studentToCompare)){
            it.remove();
            return true;
        }
        System.out.println(it.toString());
        it.next();
    }
Run Code Online (Sandbox Code Playgroud)

但有些事情是错误的:而不是通过我的迭代ArrayList<Student> school我得到it.toString():

java.util.ArrayList$Itr@188e490
java.util.ArrayList$Itr@188e490
...
Run Code Online (Sandbox Code Playgroud)

怎么了?

joh*_*902 19

itIterator,不是Student

for (Iterator<Student> it = school.iterator(); it.hasNext();){
    Student student = it.next();
    if (student.equals(studentToCompare)){
        it.remove();
        return true;
    }
    System.out.println(student.toString());
}
Run Code Online (Sandbox Code Playgroud)


Sur*_*tta 14

为什么不 ?

school.remove(studentToCompare);
Run Code Online (Sandbox Code Playgroud)

使用List remove(Object)方法.

从该列表中删除第一次出现的指定元素(如果存在)(可选操作).

而且

如果此列表包含指定的元素,则返回true(或等效地,如果此列表因调用而更改).

  • 可以突出显示它在成功时都返回true,并且它删除了_first_元素; 鉴于OP的问题,他们都有蛋糕和吃它 (2认同)