[英]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.