[Effective Java] (09)覆盖equals时总要

2018-01-07  本文已影响0人  QyQiaoo

在每个覆盖了equals方法的类中,也必须覆盖hashCode方法。若不这样做,就会违反Object.hashCode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap、HashSet和HashTable。

1. hashCode约定
2. hashCode的简单解决办法

一个好的散列函数通常倾向于“为不相等的对象产生不相等的散列码”,简单解决办法:

注:不要试图从散列码计算中排除掉一个对象的关键部分来提高性能。

上一篇下一篇

猜你喜欢

热点阅读