数组,链表来实现的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
HashMap要点总结
原创zzhuwanpeng ©著作权
文章标签 java hashmap 文章分类 Java 后端开发
-
HashMap源码剖析
本文主要比较了jdk1.7和1.8中HashMap的put逻辑
HashMap 源码 -
HashMap复杂方法总结
主要总结下一些非常规的方法,有些用不太到,但没准哪天就用上了就来看看吧。
java 批量添加 map集合 默认值