并不是说一个对象的哈希码必须完全唯一,只是两个相等对象的哈希码返回相同的哈希码。有两个不相等的对象返回相同的哈希码是完全合法的。但是,哈希码在一组对象上的分布越独特,您从HashMaps和其他使用hashCode的操作中获得的性能就越好。
像IntelliJ
Idea这样的IDE都具有用于equals和hashCode的内置生成器,这些生成器通常可以很好地为大多数对象提供“足够好”的代码(并且可能比某些手工制作的超灵巧哈希函数要好)。
例如,这是Idea为您的People类生成的hashCode函数:
public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + age; return result;}


