[英]How to search and remove an object from an arraylist?
这是我之前帖子的后续问题:
我现在需要根据条件(例如姓名和年龄)从数组中删除特定的 object,然后将结果保存到文件中。 我已经阅读了一些使用迭代器的示例,但没有很好地遵循。
G Steve 23 Biology
U Julia 19 Music Flute Sophomore
G David 25 Math
以下是我在从 txt 文件读取数据时创建 arraylist 的方法
ArrayList<Student> studentList = new ArrayList<>();
Student s = new Undergraduate(type,name,age,major,year);
studentList.add(s);
Student s = new Graduate(type,name,age, major);
studentList.add(s);
for (Student d:studentList) {
System.out.println(d.toString());
}
提前致谢!
如果您使用的是 Java 8,您可以利用 Streaming。 例如,您的代码可能如下所示:
List<Student> myFilteredList = studentList.stream()
.filter(student -> !student.getName().equals("Julia"))
.filter(student -> student.getAge() > 23)
.collect(Collectors.toList())
如果您不习惯 lambda 表达式,我认为查看该主题将是一个好主意。
要从列表中删除 object,您可以使用带有条件的removeIf
,下面的示例删除任何年龄超过 22 岁的“G”类型的学生
studentList.removeIf(s -> s.age > 22 && s.type.equals("G"));
我尝试了几种方法终于得到了这个:
System.out.println("Enter Student name: ");
System.out.println("Enter StudentID: ");
String dname = sc.next();
int dage = sc.nextInt();
for (Student s:studentList){
if (s.getName().equals(dname)&&s.getAge()>dage) {
System.out.println();
studentList.remove(s);
System.out.println("You removed: "+s.getName());
System.out.println();
break;
} else {
System.out.println();
System.out.println("This Student doesn't exist");
System.out.println();
break;
}
}
它运行但总是说“学生不存在”。 是不是“getName”不起作用(我假设它从 Student class 的构造函数中调用“name”字符串?)有人可以帮忙吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.