包含方法有效,但等于失败java

希特什·辛格

我读过一篇文章,其中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方法如何发现对象是否存在?

用户7

如果内部包含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的调用,您必须重写equalshashCode方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章