hashCode 属性

int hashCode

此对象的哈希码。

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

所有对象都有哈希码。由 Object 实现的默认哈希码仅表示对象的标识,这与默认的 操作符 == 实现仅考虑对象在相同的情况下才视为相等的方式相同(见 identityHashCode)。

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

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

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

如果子类覆盖 hashCode,则它还应覆盖 操作符 == 操作符以保持一致性。

实现

int get hashCode => Object.hash(left, top, width, height);