HashMap源码阅读
基于JDK1.8,从源码的角度对HashMap的内部结构及实现进行了深入剖析。
js_tengzi
这个作者很懒,什么都没留下…
展开
-
HashMap源码阅读01
本篇文章介绍了JDK1.8中HashMap的内部结构及各种条件下调用put方法HashMap的行为。另外通过对HashMap的源码进行阅读,整理了部分注释及翻译,附在文章末尾。原创 2019-05-25 10:40:18 · 270 阅读 · 0 评论 -
HashMap源码阅读02
上篇文章《HashMap源码阅读01》中记录了一个问题,当HashMap依次put键值对时,并没有按照由小到大的顺序排列,而是跳过了中间几个数字,今天我们就来一探究竟原创 2019-05-27 12:23:40 · 305 阅读 · 2 评论 -
HashMap源码阅读03
上篇文章中我们研究了当HashMap调用put方法,出现“hash冲突”时的处理机制。我们在整理HashMap的内部存储结构的基础上进一步呈现了当HashMap在扩容时,原有链表结构上的节点是如何处理的过程。原创 2019-05-27 16:54:05 · 109 阅读 · 0 评论 -
HashMap源码阅读04
上一篇文章我们呈现了HashMap在扩容时对链表节点的处理过程,这篇文章我们就对其中规律一探究竟。原创 2019-05-28 10:22:01 · 325 阅读 · 0 评论 -
HashMap源码阅读05
记得上一篇文章中,提到了一段代码:treeifyBin(tab, hash);这次我们就来看看,这个方法做了什么。原创 2019-05-28 11:45:48 · 114 阅读 · 0 评论 -
HashMap源码阅读06
上篇文章中介绍了treeifyBin方法,我们找到了另一个引起HashMap扩容的原因。这次我们一起来看下treeifyBin方法除了扩容之外,还能做什么事。原创 2019-05-28 17:41:36 · 207 阅读 · 1 评论 -
HashMap源码阅读07
上一篇我们研究了treeifyBin方法,发现在链表长度超过8并且节点数组长度超过64时,HashMap会将链表转化成一条双向链表,再将这条双向链表转化成一棵红黑树。这一篇文章我们就一起来看下HashMap是如何将双向链表转化成红黑树的。原创 2019-05-31 10:57:39 · 152 阅读 · 0 评论 -
HashMap源码阅读08
之前的HashMap源码阅读系列给我们呈现了HashMap内部的基本结构,还有扩容条件及过程分析等,今天我们就来进行一个整体的总结,主要包括与JDK1.7的对比和主要方法的流程总结。原创 2019-06-01 21:41:43 · 145 阅读 · 0 评论