hashcode方法
hashCode 方法是 Java 中的一个方法,它用于返回对象的哈希码值。
hashCode 是一个整数,通常用于在数据结构中快速查找对象,比如:哈希表(HashMap)和哈希集合(HashSet)。
// 获取初始哈希码 int initialHashCode = person.hashCode();
hashCode方法的作用
在哈希表中快速定位对象
哈希表内部会根据对象的哈希码,将对象存储在特定的槽(bucket)中。
如下图,蓝色圆点所示:
HashMap会通过计算key的hashCode ,然后定位到数组桶中。
我们知道HashMap 之所以速度快,因为他使用的是散列表,根据 key 的 hashcode 值生成数组下标。
通过内存地址直接查找,没有任何判断,其时间复杂度完美情况下可以达到 O(1)。
确保一致性
根据 Java 规范,如果两个对象根据 equals
方法被视为相等,那么它们的 hashCode
值必须相等。
这个原则确保了对象在哈希表或哈希集合等数据结构中的一致行为。
如果两个对象在内容上相等(根据 equals
方法定义),那么无论何时调用它们的 hashCode
方法,都应该返回相同的哈希码值。
提高性能
通过正确实现 hashCode
方法,可以帮助哈希表和哈希集合等数据结构更有效地管理数据。
良好的哈希码设计可以使对象在哈希表中均匀分布,避免数据集中在某个槽中,从而提高数据结构的性能。
用于自定义类
在自定义类中,如果你希望该类的对象可以被正确地存储在哈希表或哈希集合中,你通常需要重写 hashCode
方法,以确保满足上述规则和最佳实践。