数据结构:不同类型值的哈希函数

(PPT来源:小码哥数据结构网课)

默认的 == 表示是否指向同一个对象
默认的 hashcode 与自身的内存地址相关
默认的 equals 表示内存地址

在这里插入图片描述
在这里插入图片描述
使用 “^” 异或 操作符:在计算时充分利用了所有信息,避免冲突
在这里插入图片描述
在这里插入图片描述
默认的 hashcode 与对象自身的内存地址相关,所以实际情况中需要自己实现
在这里插入图片描述
比较两个对象是否相等时,要同时实现 hashcode 方法和 equals 方法
在这里插入图片描述
比较类型相等,可以用 getClass 或 instanceOf:
在这里插入图片描述
即:hashcode 在计算索引时使用;equals 在发生冲突时使用

自定义对象总结:
自己实现的 hashcode,哈希值相等则索引绝对相等
1) 不实现 hashcode不实现equals,没有相等的判定条件,就普遍会导致存储所有元素(索引不一样则会存储在不同地方,索引一样也会因为不相同存储两次)
2) 只实现equals不实现 hashcode,则哈希值不一样,但通过哈希值计算出的索引两种可能:一样 or 不一样
3) 只实现hashcode不实现 equals,hashcode 是根据类型内的属性是否一样来实现的,所以只要属性完全一致,哈希值就一致;但 equals 没有自己实现,所以两个对象一定不是同一个
4) 想让哪些属性作为判定对象是否相等的条件,就只将这些属性放在 hashcode 和 equals 实现

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值