闪亮菜鸟

导航

HashMap理解

 

HashMap中Capacity为数组长度,默认大小为16size为元素个数,loadFactorsize/capacity,默认为0.75,当存储的元素个数size大于等于capacity乘以0.75(即threshold)时,再增加下个元素的时候,会同时判断增加的这个元素是否会放到数组的已经存有元素的位置,如果是则不扩容,如果不是,则会按capacity的2倍扩容

元素存放的位置算法:所以我们首先想到的就是把hashcode对数组长度取模运算,这样一来,元素的分布相对来说是比较均匀的。但是,“模”运算的消耗还是比较大的,能不能找一种更快速,消耗更小的方式那?java中时这样做的, 

Java代码  收藏代码

    1. static int indexFor(int h, int length) {  
    2.        return h & (length-1);  
    3.    }  

 参考:http://blog.csdn.net/ghsau/article/details/16890151

posted on 2017-11-30 16:24  闪亮菜鸟  阅读(198)  评论(0编辑  收藏  举报