是当我们从超类重写equals()方法时所需的hashcode()方法的新实现。保持equals()和hashcode()之间的约定。
答案 0 :(得分:0)
当您要在基于哈希的集合中使用该类时,必须保持equals和hashcode方法之间的契约,例如hashmap,hashset等,它们使用hashcode方法计算哈希索引,并使用equals方法检查相等性。否则,您可以忽略哈希码。请参考下面的URL,以获取有关在hashmap中覆盖等值和hashcode方法的更多信息。 https://www.thetechnojournals.com/2019/10/why-hashmap-key-should-be-immutable-in.html
答案 1 :(得分:0)
equals
和hashCode
方法将(与任何其他方法一样)从超类继承。
如果那些仍然适合子类,则可以保持不变。
JDK中有一些示例:
Stack
扩展Vector
扩展AbstractList
Stack
只是从equals
继承Vector
Vector
从equals
覆盖AbstractList
,但仅添加synchronized
,然后仅调用super.equals
。ArrayList
也扩展了AbstractList
,但它采用遵循相同逻辑的实现覆盖了equals
,但由于它知道至少有一个参与者是一个参与者,因此效率更高。 ArrayList
。但是请记住
this.getClass()
实际上可以是子类时,类似this
的事物可能会返回意外的结果如果这导致您的比较逻辑出现问题,则由您决定。