Java面试必问之Hashmap底层实现原理(JDK1.8)

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Java面试必问之Hashmap底层实现原理(JDK1.8)

当我遇上你csy   2020-03-06 我要评论
# 1. 前言 上一篇从源码方面了解了JDK1.7中Hashmap的实现原理,可以看到其源码相对还是比较简单的。本篇笔者和大家一起学习下JDK1.8下Hashmap的实现。JDK1.8中对Hashmap做了以下改动。 - 默认初始化容量=0 - 引入红黑树,优化数据结构 - 将链表头插法改为尾插法,解决1.7中多线程循环链表的bug - 优化hash算法 - resize计算索引位置的算法改进 - 先插入后扩容 # 2. Hashmap中put()过程 笔者的源码是OpenJDK1.8的源码。 JDK1.8中,Hashmap将基本元素由Entry换成了Node,不过查看源码后发现换汤不换药,这里没啥好说的。 下图是一位大神级别画的图,自己就不再造轮子了。客官请看 ![](https://gitee.com/idea360/oss/raw/master/images/hashmap-java8-put.png) put()源码如下 ```java public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们