【发布时间】:2021-04-08 20:24:00
【问题描述】:
我在一篇文章中读到 java contains 方法使用 indexOf 方法,该方法内部使用 equals 方法检查字符串中是否存在对象。
所以我有一个代码并且我没有覆盖 Employee 类的 equals 方法。
Employee employee = new Employee(1,"John");
Employee employee2 = new Employee(1,"akshay");
Employee employee3 = new Employee(1,"akshay");
List<Employee> employeeList = new ArrayList<>();
employeeList.add(employee3);
employeeList.add(employee);
System.out.println(employeeList.contains(employee)); // returns true
System.out.println(employee3.equals(employee2)); // returns false
System.out.println(employeeList.contains(new Employee(1,"akshay"))); // returns false
如果 contains 方法在内部使用 equals 方法,为什么会返回 true? 由于 equals 方法默认检查引用相等性,因此 contains 方法如何确定对象是否存在?
【问题讨论】:
-
employeeList.add(employee);->employeeList.contains(employee) == true. -
不,我没有重写 equals 和 hashcode 方法。
标签: java methods equals contains