感觉题主的问题是,没有理解hash算法找数据的详细步骤。
hash过程主要分成两部分:hash值计算方法 和 冲突解决方法
实际使用中,可以把hash存储分成三部分看,key=>value,还有存储地址。
如上的问题,通过hash(key)=7,得出的这个7是算出来的第一个存储地址,它里面会保存key。
如果key1,和key2,通过hash算法得出的值是一样的,即hash(key1)=hash(key2)=7
,这个就是hash冲突。
根据设置的冲突解决方法来重新找存储地址,比如找到了2,那么2里面保存的实际是(key2=>value2)。
在用key2获取数据时,先执行hash(key2)=7,但是取出7的数据发现是key1。
那么就会按预设的冲突解决算法继续找,找到2发现里面的key2,才会把数据返回,获取到里面的value2
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…