L6: HashSet、hashCode()、equals()

2.  关于 Object 类的 equals 方法的特点 
a)  自反性:x.equals(x)应该返回 true 
b)  对称性:x.equals(y)为 true,那么 y.equals(x)也为 true。 
c)  传递性:x.equals(y)为  true 并且 y.equals(z)为 true,那么 x.equals(z)也应该为 true。 
d)  一致性:x.equals(y)的第一次调用为 true,那么 x.equals(y)的第二次、第三次、第 n
次调用也应该为 true,前提条件是在比较之间没有修改 x 也没有修改 y。 
e)  对于非空引用 x,x.equals(null)返回 false。 
3.  关于 Object 类的 hashCode()方法的特点: 
a)  在 Java 应用的一次执行过程当中,对于同一个对象的 hashCode 方法的多次调用,
他们应该返回同样的值(前提是该对象的信息没有发生变化)。 
b)  对于两个对象来说,如果使用 equals 方法比较返回 true,那么这两个对象的 hashCode
值一定是相同的。 
c)  对于两个对象来说,如果使用 equals 方法比较返回 false,那么这两个对象的 hashCode
值不要求一定不同(可以相同,可以不同),但是如果不同则可以提高应用的性能。 
d)  对于 Object 类来说,不同的 Object 对象的 hashCode 值是不同的(Object 类的 hashCode
值表示的是对象的地址)。 
4.  当使用 HashSet 时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hash code 值是否与增加的对象的 hash code 值一致;如果不一致,直接加进去;如
果一致,再进行 equals 方法的比较,equals 方法如果返回 true,表示对象已经加进
去了,就不会再增加新的对象,否则加进去。 
5.  如果我们重写 equals 方法,那么也要重写 hashCode 方法,反之亦然。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值