天天看点

hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,

作者:程大白7g0E

hashCode()和equals()方法

#程序员 #java #面试

1. hashCode() 方法:

作用:计算对象的哈希码,得到一个整数值,通常用来确定对象在哈希表等数据结构中的存储位置,提高查找和插入的效率。

计算规则:通常基于对象的属性,不同的对象可能产生相同的哈希码,即哈希冲突。

2. equals() 方法:

作用:比较两个对象是否在逻辑上相等,默认使用对象的引用地址进行比较。

重写:可以根据对象的属性重写equals()方法,实现自定义的相等比较逻辑。

3. 重写equals()方法的注意事项:

自反性(Reflexive):对于任何非空引用对象 x,x.equals(x) 应该返回 true。

对称性(Symmetric):对于任何非空引用对象 x 和 y,如果 x.equals(y) 返回 true,则 y.equals(x) 也应该返回 true。

传递性(Transitive):对于任何非空引用对象 x、y 和 z,如果 x.equals(y) 返回 true,且 y.equals(z) 也返回 true,则 x.equals(z) 也应该返回 true。

一致性(Consistent):对于任何非空引用对象 x 和 y,多次调用 x.equals(y) 应该始终返回相同的结果,前提是对象上的信息没有被修改。

对 null 的比较(Comparison to null):对于任何非空引用对象 x,x.equals(null) 应该返回 false。

4. 哈希码和equals方法的关联:

在重写equals()方法时,通常也需要同时重写hashCode()方法,以保证相等的对象具有相同的哈希码。

在使用哈希表等数据结构时,先根据哈希码确定存储位置,再使用equals()方法处理可能的哈希冲突。

用equals()判等的两个对象的哈希码一定相等,用equals()判不等的两个对象的哈希码不一定不相等。

5. 重写场景:

需要在自定义对象之间进行比较或存储在哈希集合中时,需要重写hashCode()和equals()方法。

常见场景:实现缓存、数据唯一性校验或自定义数据结构时,重写这些方法有助于控制对象的比较和存储行为。

hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,
hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,
hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,
hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,
hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,
hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,
hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,
hashCode()和equals()方法#程序员#java#面试1.hashCode()方法:作用:计算对象的哈希码,

继续阅读