标签:pac 需求 迭代 http 参数 hold 比较 port 因子
HashMap 结合数组的快速查询和链表的快速插入等优点实现。
参数说明:
table:数组长度。
size:k-v数量。
modCount:结构改变标记,主要在并发环境下HashMap发生扩容等结构变化时校验,迭代时如果不及预期则抛出异常ConcurrentModificationException,而不是迭代完后再做校验。
lodaFactor:加载因子,表示k-v在hashMap的密度。默认0.75,是一个对空间时间的权衡值,需求时间减少,需求空间增加。
capacity:数组长度,初始值16;
threshold:resize vlaue
put操作:
set操作:
几个精妙的算法:
tableSizeFor(int cap),计算大于cap的最小的2的平方。从二进制的角度进行无符号右移操作得到最接近大于这个数的0x....11111,然后+1。
resize(),从二进制的角度,让原值均匀的分布在原位置或者原位置移动原长度的位置(2的幂),扩容后由于长度是原来的两倍,数组下标的hash会增加1位,通过&运算多查看一位hash,如果为0则说明在原位,如果为一说明在原位置移动原数组长度的位置,这就是数组长度用2次幂的好处之一,简直是精妙,省去了重新计算hash的操作,并发在这里会出现死链。
http://www.importnew.com/20386.html
标签:pac 需求 迭代 http 参数 hold 比较 port 因子
原文地址:http://www.cnblogs.com/fastLearn/p/6702113.html