hashCode属性
重写
该对象的哈希码。
哈希码是一个表示对象状态的单一整数,该状态会影响运算符==比较。
所有对象都有哈希码。由Object类实现的默认哈希码仅表示对象的标识符,与默认的运算符==实现只有当对象完全相同才认为它们相等的方式相同(参见identityHashCode)。
如果运算符==被重写以使用对象状态,则哈希码也必须更改以表示该状态;否则对象无法在默认的Set和Map实现等基于哈希的数据结构中使用。
对象的哈希码必须相同,如果根据运算符==它们相等。对象的哈希码仅在对象以影响相等性的方式更改时才应更改。对哈希码没有进一步的要求。它们不需要在程序执行的执行之间保持一致,也没有分布保证。
不相等的对象允许有相同的哈希码。技术上甚至可以允许所有实例具有相同的哈希码,但如果冲突发生得太频繁,则可能会降低基于哈希的数据结构(如HashSet或HashMap)的效率。
实现
int get hashCode => (_value ^ (_value >> 30)) & 0x3FFFFFFF;