[英]How to search for an element in an ArrayList using a string?
我正在编写一个程序来跟踪学校的课程和学生。 我有学校,教室和学生对象。 学校包含教室对象的ArrayList,每个教室包含学生对象的ArrayList。
我正在尝试在School类中编写一种方法,以使用字符串名称和字符串教室名称作为参数来删除学生。
这是我到目前为止的内容:
public void remove( String studentName, String classroomName) {
for(Classroom c : classes) {
if(c.className.equals(classroomName)){
//search for student and remove
for(Student s : students){
if(s.studentName.equals(studentName)){
s.remove(studentName);
}
}
}
}
我认为这不起作用,因为在Classroom类中声明了Student对象的ArrayList。
有没有一种方法可以使用非对象参数在对象ArrayList中搜索元素?
就像他们告诉您的那样,除非您使用迭代器或使用索引手动控制迭代,否则您无法在列表上进行迭代时将其删除。
否则,如果您使用的是Java 8,则可以使用:
students.removeIf(s -> s.studentName.equals(studentName));
正如其他人指出的那样,您只能使用Iterator
删除元素。 您想要这样的东西:
for(Iterator<Student> it = c.students.iterator(); it.hasNext();)
{
Student s = it.next();
if(s.studentName.equals(studentName))
it.remove();
}
您说每个Classroom
包含一个Students
名单,所以我假设c.students
是您要迭代的对象-您发布的代码使用了一个独立的students
名单。 也许是错字?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.