【发布时间】:2018-07-13 22:31:28
【问题描述】:
我在为自定义 Employee 类实现 hashmap 时遇到问题。
-
仅覆盖
Hash()我只覆盖了员工类的
hash()。所以,我得到相同对象的相同哈希码值。如果我不覆盖equals(),那会很好吗?因为对象类的equals() 比较了引用(对于相等的对象,我得到了相同的引用)。无论如何,根据我的逻辑,我永远不会为不同的 emp 对象获得相同的哈希值。所以留下equals()就好了? 如果我们同时覆盖
Equals()和hashcode(),那么我们将始终拥有唯一值吗?那么就不可能在单个存储桶位置获取 Linkedlist 了吗?当我们覆盖 equals() 时,在第一行我们将始终给出 (this == o)。在这种情况下,即使在覆盖 hashcode() 之后,如果我为 2 个不同的员工对象获得相同的哈希码,如果返回相同的哈希码,第一行将始终得到满足。那么在equals()中剩下的逻辑有什么用呢?
【问题讨论】:
标签: list overriding equals hashcode