【发布时间】:2020-05-01 12:28:58
【问题描述】:
我有一个名为 Student 的类有两个变量:
String lastName;
String firstName;
public Student(String lastName,String firstName){
this.lastName = lastName;
this.firstName = firstName;
}
public Student(String lastName){
this.lastName = lastName;
}
@Override
public int hashCode() {
return super.hashCode();
}
@Override
public boolean equals(Object obj) {
String getLastName = ((Student) obj).getLastName();
return lastName.equalsIgnoreCase(getLastName);
}
在 Main 类中我创建了一个 ArrayList
private static ArrayList<Student> listOfStudents = new ArrayList<>();
我已经创建了这个方法来从 ArrayList 中获取学生
public void findStudent(String lastName){
for (int i=0;i<listOfStudents.size();i++){
if (listOfStudents.get(i).equals(new Student(lastName))){
System.out.println(listOfStudents.get(i));
}
}
}
我已覆盖 equals() 以按姓氏检查。 现在一切都很好,但是当我添加重复的姓氏时,如下所示:
listOfStudents.add(new Student("Tamoussat","Abdelillah"));
listOfStudents.add(new Student("Tamoussat","Fatima"));
listOfStudents.add(new Student("Soussi","Ahlam"));
我只得到第一个元素,如果它们具有相同的姓氏,我想要如何获取多个元素的方法? 最好的问候
【问题讨论】:
-
能否请您发布您的 hashcode() 和 equals() 方法
-
你是说你只得到第一个重复的元素,但你想要所有重复的元素?
-
@SharadNanda 完全正确
-
@IgorKhvostenkov 完成
标签: java arrays arraylist methods find