【Java】HashMap实现原理及分析

一、传统 HashMap的缺点

  • JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。
  • 当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,遍历的时间复杂度就是 O(n),完全失去了它的优势。
  • 针对这种情况,JDK 1.8 中引入了红黑树(查找时间复杂度为 O(logn))来优化这个问题

二、JDK1.8中HashMap的数据结构

2.1HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的

分析HashMap的put方法

 

 JDK1.8中的HashMap的优化:https://blog.csdn.net/lianhuazy167/article/details/66967698

Hashmap实际上是一个数组和链表的结合体(在数据结构中,一般称之为“链表散列“)

posted @ 2018-08-16 21:07  陈泽泽  阅读(300)  评论(0)    收藏  举报