hash hashcode变化_Hash和HashCode

Hash

把任意长度的输入通过散列算法变换成固定长度的输出。或者说是一种将任意长度的消息压缩到某一个固定长度的消息摘要的函数。

散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,难以找到逆向规律。当原有文件发生变化时,其标志值也会发生改变。

hash值相等,key值不一定相等;hash值不相等,那么key值一定不相等。

key值相等,hash值一定相等

HashCode

HashCode是Object的一个方法,hashcode方法返回一个hash code值。

减少查找次数,提高程序效率

hashcode方法主要是为了配合基于散列的集合使用(集合中不允许重复元素的存在)。

当集合要添加新的对象时,先调用这个对象的hashcode方法,得到对应的hashcode值,实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较。如果存在该hashcode值,就调用它的equals方法进行比较。

equals和==区别

在string,int中都重写了object类中的equals方法,在object中只是利用==判断,判断对象的地址是否相等。

在string中先用==判断了,然后判断是否为string类,然后进行每个字符的比较。int中也类似。

注:equals相等,则hashcode值相等;hashcode值相等,equals不一定相等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值