繁体   English   中英

如何从ArrayList中删除对象?

[英]How to remove an object from an 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....

我认为您不需要迭代器:

    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;
    }

您使用错误的迭代器方式; 如果使用外部迭代器进行迭代,则无需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");
    }
}

如果您以前了解过学生(或其位置),则可以从List接口简单地调用remove方法,但是如果要在遍历集合时将其删除,那么大多数Java Collections都会采用外部迭代器。

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

如果这是您要执行的操作,请参考

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

这具有删除单个行的代码段。 您需要做的就是在遇到要删除的名称后立即删除接下来的5行。

暂无
暂无

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

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