1. 数组,链表来实现的hashmap

    HashMap要点总结_java hashmap

  2. 当不停的往里放置元素,会造成resize操作,即重新生成数组,重新为每个元素hash,消耗性能

    数组默认长度是16 , load factor为0.75 , 所以resize的时机是数组的capacity > 12


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

  4. java会用key的hashcode值与数组的槽数-1进行与运算;

    这里会有一个问题只有当数组的槽数为2的n次方-1,其二进制全是1的(如2的2次方-1=11)的时候哈希值产生碰撞的概率是最小

  5. hashmap的问题, 多线程时hashmap会产生死循环,可以使用concurrentHashMap