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

时间:2018-09-18 15:34:29

标签: java arraylist

我正在编写一个程序来跟踪学校的课程和学生。我有学校,教室和学生对象。学校包含教室对象的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中搜索元素?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

正如其他人所指出的,您只能删除带有struct Action { let name: String let function: (Character) -> () } let list_weapons: [Int: Action] = [ 1: Action(name: "Sword", function: attack_sword), // and the rest ] list_weapons[1]!.function(someCharacter) 的元素。您想要这样的东西:

Iterator

您说每个 for(Iterator<Student> it = c.students.iterator(); it.hasNext();) { Student s = it.next(); if(s.studentName.equals(studentName)) it.remove(); } 都包含一个Classroom的列表,所以我假设Students是您要迭代的对象-您发布的代码使用独立列表{{1 }}。也许是错字?