我读过一篇文章,其中Java包含方法使用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
如果内部包含equals方法,为什么contains方法返回true?当equals方法默认检查引用是否相等时,contains方法如何发现对象是否存在?
如果内部包含equals方法,为什么contains方法返回true?
equals
当两个对象都引用相同的对象时,默认行为将返回true。这就是代码中发生的事情。
Employee employee = new Employee(1, "John");
....
List<Employee> employeeList = new ArrayList<>();
employeeList.add(employee);
....
System.out.println(employeeList.contains(employee));
最后一行循环遍历列表中的每个Employee,并在其上调用equals。当遇到约翰时,就像检查employee.equals(employee)
哪个是真的。
对于最后两个返回true的调用,您必须重写equals和hashCode方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句