数组,链表来实现的hashmap
当不停的往里放置元素,会造成resize操作,即重新生成数组,重新为每个元素hash,消耗性能
数组默认长度是16 , load factor为0.75 , 所以resize的时机是数组的capacity > 12
static int indexFor(int h, int length) { return h & (length-1); }
java会用key的hashcode值与数组的槽数-1进行与运算;
这里会有一个问题只有当数组的槽数为2的n次方-1,其二进制全是1的(如2的2次方-1=11)的时候哈希值产生碰撞的概率是最小
hashmap的问题, 多线程时hashmap会产生死循环,可以使用concurrentHashMap
原文:http://754136.blog.51cto.com/744136/1729581