hashCode属性

int hashCode
override

该对象的哈希码。

哈希码是一个整数,代表对象的状态,该状态影响操作符==比较。

所有对象都有哈希码。由Object实现的默认哈希码仅表示对象的标识,就像默认的操作符==实现只考虑对象相等如果它们是相同的(参见identityHashCode)。

如果操作符==被覆盖以使用对象状态,则哈希码也必须更改以表示该状态,否则对象不能用于基于哈希的数据结构,如默认的SetMap实现。

根据操作符==,对于相等的对象,哈希码必须相同。对象的哈希码只有在对象以影响相等性的方式改变时才应该更改。对哈希码没有其他要求。它们不需要在程序执行之间保持一致,也没有分布保证。

不相等的对象允许有相同的哈希码。从技术上讲,甚至允许所有实例都有相同的哈希码,但如果冲突太频繁,可能会降低基于哈希的数据结构(如HashSetHashMap)的效率。

如果子类覆盖hashCode,则它应该同时覆盖操作符==运算符以保持一致性。

实现

external int get hashCode;