我正在尝试使用 String 为方法“contain”和“lastIndexOf”获得正确的输出,但它不会为这些方法提供正确的输出,在那种情况下,“contain”和“contain”为 false 或 true “lastIndexOf”元素的位置。请问我该怎么做?非常感谢。
public class Employee {
public static final int size = 0;
String firstName;
String surname;
int yearOfBirth;
String PPSNumber;
String email;
String phoneNumber;
public Employee(String firstName, String surname, int yearOfBirth, String PPSNumber, String email, String phoneNumber) {
this.firstName = firstName;
this.surname = surname;
this.yearOfBirth = yearOfBirth;
this.PPSNumber = PPSNumber;
this.email = email;
this.phoneNumber = phoneNumber;
}
}
//______________________________________________________//
import java.util.ArrayList;
public class EmployeeManagement {
public static void main(String[] args) {
ArrayList<Employee> employeeList = new ArrayList<>();
employeeList.add(new Employee("Charlie", "Charles", 1991, "234567b", "charlie@b.ie", "7654321"));
employeeList.add(new Employee("David", "Davies", 1992, "5213452d", "david@d.ie", "352135613"));
employeeList.add(new Employee("Levi", "Silva", 1990, "1234", "Levi@b.ie", "333333"));
employeeList.add(new Employee("Gus", "Silva", 1993, "4321", "Gus@b.ie", "444444"));
for (Employee getName : employeeList) {
System.out.print(getName.firstName + ", ");
}
System.out.println(" ");
// contains(Employee)
Employee Emp = new Employee("Gus", "Silva", 1993, "4321", "Gus@b.ie", "444444");
System.out.println("Contains String: " + employeeList.contains(Emp)); // can't make give me the right contain answer
// lastIndexOf()
Employee Charlie1 = new Employee("Charlie", "Charles", 1991, "234567b", "charlie@b.ie", "7654321");
System.out.println("lastIndexOf: " + employeeList.lastIndexOf(Charlie1)); // can't find the lastIndexOf
}
}
最佳答案
您需要在Employee
(或任何其他类中实现equals
和hashCode
,以便包含
, sort
或其他方法有效。
例如,此创意向导默认使用所有字段:
class Employee {
public static final int size = 0;
String firstName;
String surname;
int yearOfBirth;
String PPSNumber;
String email;
String phoneNumber;
public Employee(String firstName, String surname, int yearOfBirth, String PPSNumber, String email, String phoneNumber) {
this.firstName = firstName;
this.surname = surname;
this.yearOfBirth = yearOfBirth;
this.PPSNumber = PPSNumber;
this.email = email;
this.phoneNumber = phoneNumber;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Employee employee = (Employee) o;
if (yearOfBirth != employee.yearOfBirth) return false;
if (firstName != null ? !firstName.equals(employee.firstName) : employee.firstName != null) return false;
if (surname != null ? !surname.equals(employee.surname) : employee.surname != null) return false;
if (PPSNumber != null ? !PPSNumber.equals(employee.PPSNumber) : employee.PPSNumber != null) return false;
if (email != null ? !email.equals(employee.email) : employee.email != null) return false;
return phoneNumber != null ? phoneNumber.equals(employee.phoneNumber) : employee.phoneNumber == null;
}
@Override
public int hashCode() {
int result = firstName != null ? firstName.hashCode() : 0;
result = 31 * result + (surname != null ? surname.hashCode() : 0);
result = 31 * result + yearOfBirth;
result = 31 * result + (PPSNumber != null ? PPSNumber.hashCode() : 0);
result = 31 * result + (email != null ? email.hashCode() : 0);
result = 31 * result + (phoneNumber != null ? phoneNumber.hashCode() : 0);
return result;
}
}
现在,只需添加所需的或必填的字段,您就会看到 contains
的工作原理。
关于java - ArrayList - 使用字符串获取 "Contain"和 "lastIndexOf",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42390684/