0

我想根据学生姓名从 ArrayList 中删除一个对象,每个对象都有 5 个元素。问题:如何从文本文件中删除对象。

ArrayList<Student> studentList= new ArrayList<Student>();
Iterator iter = studentList.iterator();

public DVD remove(String removeName) {
    while (iter.hasNext()) {
        for (Student stu : studentList) {
            if (stu .GetName().toUpperCase().contains(removeName.toUpperCase())) {
                System.out.println("Found And Removed");
                iter.remove();
                return stu ;
            }

            System.out.println("Not Found");
        }
    }
    return null;

}

每个学生都从一个文本文件中读入。每行一个元素。

前任:

  John Smith
  Undergrad
  21 years old
  2010
  2014
  Pocahantas
  Professor
  369 years old
  1599
  1603
  Etc... // new person
  etc....
4

3 回答 3

1

我认为您不需要迭代器:

    public Student remove(String removeName) {
        for (Student stu : studentList) {
            if (stu.getName().toUpperCase().contains(removeName.toUpperCase())) {
                System.out.println("Found and Removed");
                studentList.remove(stu);
                return stu;
            }
         }
         System.out.println("Not Found");
         return null;
    }
于 2013-04-06T20:40:07.280 回答
0

您以错误的方式使用迭代器;如果您使用外部迭代器进行迭代,则不需要以下for语句:

while (iter.hasNext()) {
    Student stu = iter.next();
    if (stu .GetName().toUpperCase().contains(removeName.toUpperCase())) {
        System.out.println("Found And Removed");
        iter.remove();
        return stu ;
    }
    System.out.println("Not Found");
    }
}

如果您之前知道学生(或它的位置),您可以简单地removeList接口调用方法,但如果您想在迭代集合时删除它,那么外部迭代器是大多数 Java 集合的方式。

于 2013-04-06T20:37:35.317 回答
0

如果我理解正确,您想删除与必须从文本文件中删除的学生姓名相对应的 5 行。

如果这是您想要做的,请参考

在文件中查找一行并将其删除

这有用于删除一行的代码段。您需要做的是,一旦遇到要删除的名称,就删除接下来的 5 行。

于 2013-04-06T20:38:19.960 回答