
关于hashmap
文章平均质量分 63
KuKu_Nao
这个作者很懒,什么都没留下…
展开
-
hashMap扩容机制1.7和1.8汇总及对比
不管是JDK1.7或者JDK1.8 当put方法执行的时候,如果table为空,则执行resize();方法扩容。默认长度为16;JDK1.7扩容条件:发生扩容的条件必须同时满足两点当前存储的数量大于等于阈值发生hash碰撞特点:先扩容,再添加(头插法)缺点:头插法会使链表发生反转,多线程环境下会产生环扩容之后对table的调整:table容量变为2倍,元素下标需要重新计算重新获取key的hashcode 再对hashcode进行扰动(具体解释可以翻我文章)newinex = has原创 2021-07-01 17:45:40 · 1373 阅读 · 4 评论 -
hashmap构造函数及初始化
hashmap构造函数hashmap的构造函数有四种(jdk1.8):先上源码,然后再一一解释// 方式一:public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " +原创 2021-07-01 17:05:23 · 996 阅读 · 0 评论 -
hashmap取key下标详解+相关面试问题
hashmap中获取key数组下标index的步骤大致为一下散布:获取到key的hashcode (32为的int值)通过扰动函数(哈希函数)得到 newhash下标 index = newhash & ( table.length - 1)下面展开对这三步进行分析:第一步:key.hashCode()函数调用的是key键值类型自带的哈希函数,返回int型散列值。int值范围为**-2147483648~2147483647**第一步就是拿到 hashcode 很好理解,重点原创 2021-06-25 21:27:13 · 2072 阅读 · 0 评论