0
点赞
收藏
分享

微信扫一扫

hash

Star英 2021-09-24 阅读 79
日记本

1.什么是hash?
hash,也叫散列,是把任意长度的输入值,通过散列算法,变换成固定长度的输出,该输出就是散列值。常用的hash函数有直接取余法,乘法取整法,平方取中发。hash表就是这些值组成的。
2.hashcode?
hashcode就是通过hash函数得来的,通俗的说,就是通过一种算法的到的,hashcode就是在hash表中对应的位置。每个对象都有hashcode,那是怎么得到的呢? 首先一个对象肯定是有物理地址的,物理地址和这个hashcode是不一样的,hashcode代表对象的地址说的是对象在hash表中的位置,物理地址说的是对象存放在内存当中的地址。那么是如何得到hashcode的呢。通过对象的物理地址转换成一个整数,然后改整数通过hash函数的算法就得到了这个hashcode。所以hashcode就是hash表中对应的位置。
3.hashcode的作用?
hashcode是为了查找的便捷性,比如现在我们有一个1000个数的内存,,在其中要存放1000个不一样的数字,用最笨的方法,就是存一个数字,就遍历一遍,看有没有相同得数,当存了900个数字,开始存901个数字的时候,就需要跟900个数字进行对比,这样就很麻烦,很是消耗时间,用hashcode来记录对象的位置,来看一下。hash表中有1、2、3、4、5、6、7、8个位置,存第一个数,hashcode为1,该数就放在hash表中1的位置,存到100个数字,hash表中8个位置会有很多数字了,1中可能有20个数字,存101个数字时,他先查hashcode值对应的位置,假设为1,那么就有20个数字和他的hashcode相同,他只需要跟这20个数字相比较(equals),如果每一个相同,那么就放在1这个位置,这样比较的次数就少了很多,实际上hash表中有很多位置,这里只是举例只有8个,所以比较的次数会让你觉得也挺多的,实际上,如果hash表很大,那么比较的次数就很少很少了。 通过对原始方法和使用hashcode方法进行对比,我们就知道了hashcode的作用,并且为什么要使用hashcode了
4.如果对象的equals方法被重写,那么对象的HashCode方法也尽量重写

举报

相关推荐

hash functions

reduce + hash

hash类型

Hash冲突

DJB Hash

hash模板

0 条评论