hashcode是什么
TOP1 208
hashcode是用来在散列存储结构中确定对象的存储地址的(用HashCode来代表对象就是在hash表中的位置)。hash 翻译做“散列”,也可直译为“哈希”,就是把任意长度的值输入,通过hash()函数输出固定长度的消息摘要。HashCode的存在主要是为了查找的快捷性。
HashCode的作用
hashcode代表对象的地址说的是对象在hash表中的位置,物理地址说的对象存放在内存中的地址,那么对象如何得到hashcode呢?通过对象的内部地址(也就是物理地址)转换成一个整数,然后该整数通过hash函数的算法就得到了hashcode,所以,hashcode是什么呢?就是在hash表中对应的位置。这里如果还不是很清楚的话,举个例子,hash表中有 hashcode为1、hashcode为2、(…)3、4、5、6、7、8这样八个位置,有一个对象A,A的物理地址转换为一个整数17(这是假如),就通过直接取余算法,17%8=1,那么A的hashcode就为1,且A就在hash表中1的位置。
存储1000个数,存储到了900,就先遍历900是否已经被存储,要遍历900次,如果没有就存储,这样会消耗很多时间。如果用hash存储,如hash表中有1,2,3,4,5,6,7,8个这样的位置.如果已经存储了100个数,当存储hashcode为1,那么就有20个数字和他的hashcode相同,只需要跟着20个数字相比较(使用equals),如果都不相同,就存储在1的位置。通过与原始方法的对比就知道hashcode具有很大的优势。