为什么我需要覆盖Java中的equals和hashCode方法?最近我读了这个 Developer Works文档。该文档是关于定义hashCode()和equals()有效和正确的,但我无法弄清楚为什么我们需要覆盖这两种方法。如何有效地实施这些方法?
4 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
您必须覆盖覆盖equals()的每个类中的hashCode()。如果不这样做,将导致违反Object.hashCode()的常规合同,这将阻止您的类与所有基于散列的集合(包括HashMap,HashSet和Hashtable)一起正常运行。
来自Effective Java,来自Joshua Bloch
通过定义equals()
和hashCode()
一致,您可以提高类的可用性作为基于散列的集合中的键。正如hashCode的API文档所解释的那样:“支持这种方法是为了哈希表的好处,例如那些提供的哈希表java.util.Hashtable
。”
关于如何有效实现这些方法的问题的最佳答案是建议您阅读Effective Java的第3章。
添加回答
举报
0/150
提交
取消