如何从ArrayList中删除对象?

时间:2013-04-06 20:29:38

标签: java arraylist

我想根据学生姓名从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....

3 个答案:

答案 0 :(得分: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;
    }

答案 1 :(得分: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");
    }
}

如果你之前(或它的位置)知道学生,你只需从remove界面调用List方法,但如果你想在迭代整个集合时删除它,那么外部迭代器是大多数Java集合的方式。

答案 2 :(得分:0)

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

如果这是您想要的,请参阅

Find a line in a file and remove it

这有删除一行的代码段。您需要做的是在遇到要删除的名称时立即删除接下来的5行。