美文网首页
HashMap原理概述

HashMap原理概述

作者: 屎倒淋头还嚼便 | 来源:发表于2020-04-16 15:24 被阅读0次
    image.png
    出自:https://blog.csdn.net/weixin_42504145/article/details/84309397?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1

    疑问:

    static int indexFor(int h, int length) { //根据hash值和数组长度算出索引值
            return h & (length-1);  //这里不能随便算取,用hash&(length-1)是有原因的,这样可以确保算出来的索引是在数组大小范围内,不会超出
        }
    

    // 相当于h%(length-1),出自:
    https://blog.csdn.net/lele52080/article/details/78451369
    https://www.iteye.com/blog/kujo-2225022
    1、一个数组下标处,存放了多个键值对,除了hash值冲突之外,是否存在hash值没有冲突,但是定位到了同一个数组下标处的情况?
    既然如果是取余,那么30%30,60%30的余数都是0,没看懂博客和源码,大概可能有这样的情况,这不影响hashMap的存放和获取数据。
    hash算法的目的是为了提高查询的效率,出现不同的k值存放到同一个下标处,影响了效率,可能HashMap不会出现这种情况
    2、h & (length-1);计算数组下标的这个方法的h不是k值的hash值,而是根据该hash值二次计算得到的h值。为什么要二次计算

    相关文章

      网友评论

          本文标题:HashMap原理概述

          本文链接:https://www.haomeiwen.com/subject/nvyrvhtx.html