hashCode 属性

int hashCode
重写

此对象的哈希码。

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

所有对象都有哈希码。由 Object 类实现的默认哈希码仅代表对象的标识符,这与默认的 运算符 == 实现(仅当对象相同时才认为对象相等,参见 identityHashCode)相同。

如果 运算符 == 被重写以使用对象状态,则必须将哈希码也更改以表示该状态;否则,该对象无法使用默认的 SetMap 实现等基于哈希的数据结构。

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

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

如果子类重写了 hashCode,它还应该重写 运算符 == 以保持一致性。

实现

int get hashCode => SystemHash.hash2(x.hashCode, y.hashCode, 0);