
HashMap源码分析
文章平均质量分 76
个人对Hashmap的理解
野狼飞飞
这个作者很懒,什么都没留下…
展开
-
JDK1.8中的HashMap扩容原理
JDK1.8中HashMap的扩容在JDK1.8中对扩容做了一些优化先看一段扩容的核心代码final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; int newCap, newThr = 0;原创 2021-04-07 17:36:11 · 1547 阅读 · 4 评论 -
多线程下HashMap的扩容导致线程安全性问题
JDK1.7中多线程扩容导致的循环链表首先我们先来看一组单线程下扩容的例子:单线程扩容(引用木霖森77大神博客):假设:hash算法就是简单的key与length(数组长度)求余。hash表长度为2,如果不扩容, 那么元素key为3,5,7按照计算(key%table.length)的话都应该碰撞到table[1]上扩容:hash表长度会扩容为4重新hash,key=3 会落到table[3]上(3%4=3), 当前e.next为key(7), 继续while循环重新hash,key=原创 2021-04-02 14:48:14 · 895 阅读 · 2 评论