深入理解HashMap(五): 关键源码逐行分析之put

2018-07-31
阅读 4 分钟
6k
上一篇我们讨论了HashMap的扩容操作, 提到扩容操作发生在table的初始化或者table大小超过threshold后,而这两个条件的触发基本上就发生在put操作中。

深入理解HashMap(四): 关键源码逐行分析之resize扩容

2018-07-30
阅读 7 分钟
16.2k
上一篇我们说明了HashMap的构造函数, 谈到构造函数中并不会初始化table 变量, table 变量是在 resize过程中初始化的.

深入理解HashMap(三): 关键源码逐行分析之构造函数

2018-07-29
阅读 4 分钟
5.7k
前言 系列文章目录 上一篇我们说明了HashMap的hash算法, 说到HashMap在构造时会自动将table设为2的整数次幂. 本篇我们就来聊聊HashMap的构造函数. 本文的源码基于 jdk8 版本. 构造函数 HashMap 共有四个构造函数 {代码...} 不知道大家发现了没有, 即使我们在构造函数中指定了initialCapacity, 这个值也只被用来计算 thre...

深入理解HashMap(二): 关键源码逐行分析之hash算法

2018-07-28
阅读 2 分钟
6.5k
前言 系列文章目录 前面我们讨论了HashMap的结构, 接下来几篇我们从源码角度来看HashMap的实现细节. 本篇我们就来聊聊HashMap的hash算法 本文的源码基于 jdk8 版本. hash算法 上一篇文章我们提到, 为了利用数组索引进行快速查找, 我们需要先将 key值映射成数组下标. 因为数组的下标是有限的集合, 所以我们可以先通过hash...

深入理解HashMap(一): 从源头说起

2018-07-27
阅读 4 分钟
7k
前言 系列文章目录 HashMap我们都不陌生, 也是java面试几乎必问的考点, 本系列我们来深入思考有关HashMap的设计思想和实现细节. HashMap解决了什么问题? 任何数据结构的产生总对应着要解决一个实际的问题, HashMap的产生要解决问题就是: 如何有效的 存 取 一组 key-vaule 键值对 key-value键值对是最常使用的数据形式, ...