java - ArrayList - 使用字符串获取 "Contain"和 "lastIndexOf"

标签 java arraylist

我正在尝试使用 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(或任何其他类中实现equalshashCode,以便包含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/

相关文章:

java - 在 Java 中使用左移和右移实现 ASCII 值

java - 如何比较 ArrayList 中的 ArrayList 之间的 Int? (java)

java - 使用 ArrayLists 进行数学计算

javascript - 在JSP中添加多条记录并将选定的数据发送到Servlet

java - 将结果集写入 csv 文件

java - 如何通过多个线程成功访问和循环ArrayList?

java - 取消部署时删除的上下文

java - Java 的 Makefile 找不到包

java - 如何在 Java 中生成内部分离的 XML 签名

java - 在单元测试期间模拟数据源