繁体   English   中英

如何使用字符串在ArrayList中搜索元素?

[英]How to search for an element in an ArrayList using a string?

我正在编写一个程序来跟踪学校的课程和学生。 我有学校,教室和学生对象。 学校包含教室对象的ArrayList,每个教室包含学生对象的ArrayList。

我正在尝试在School类中编写一种方法,以使用字符串名称和字符串教室名称作为参数来删除学生。

这是我到目前为止的内容:

public void remove( String studentName, String classroomName) {
    for(Classroom c : classes) {
        if(c.className.equals(classroomName)){
         //search for student and remove
          for(Student s : students){
             if(s.studentName.equals(studentName)){
                s.remove(studentName);
        }
      }
    }
}

我认为这不起作用,因为在Classroom类中声明了Student对象的ArrayList。

有没有一种方法可以使用非对象参数在对象ArrayList中搜索元素?

就像他们告诉您的那样,除非您使用迭代器或使用索引手动控制迭代,否则您无法在列表上进行迭代时将其删除。

否则,如果您使用的是Java 8,则可以使用:

students.removeIf(s -> s.studentName.equals(studentName));

正如其他人指出的那样,您只能使用Iterator删除元素。 您想要这样的东西:

    for(Iterator<Student> it = c.students.iterator(); it.hasNext();)
    {
        Student s = it.next();
        if(s.studentName.equals(studentName))
            it.remove();
    }

您说每个Classroom包含一个Students名单,所以我假设c.students是您要迭代的对象-您发布的代码使用了一个独立的students名单。 也许是错字?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM