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