前言
在聊聊 HashMap 篇中,通过 JDK1.7 的 HashMap 的几个方法:put()、get()、resize()/transfer()
讲解了其原理,在最后简单描述了 HashMap 死链问题。引出了在 Java 8 中,HashMap 底层结构变化为 数组+链表+红黑树,提高了查询效率,并解决了死链问题。我们就以此作为切入点,来看看 HashMap 在 Java 8 版本有了哪些变化。
原创大约 13 分钟
在聊聊 HashMap 篇中,通过 JDK1.7 的 HashMap 的几个方法:put()、get()、resize()/transfer()
讲解了其原理,在最后简单描述了 HashMap 死链问题。引出了在 Java 8 中,HashMap 底层结构变化为 数组+链表+红黑树,提高了查询效率,并解决了死链问题。我们就以此作为切入点,来看看 HashMap 在 Java 8 版本有了哪些变化。
Map,Java 三大集合框架之一,JDK1.2 时便已存在,是一个Key-Value
键值对映射的接口,即一个Key
对应一个Value
。在日常开发使用中,我们常见的 Map 实现类有:HashMap、Hashtable、TreeMap、LinkedHashMap 等,用以应对不同业务情况下的数据存储与使用。而本篇的主角是 HashMap,让我们来粗浅的聊聊它吧。(注意:本篇 HashMap 的源码和原理讲解全部基于 JDK1.7)
HashMap 是基于哈希表(Hashtable)的 Map 实现类,以Key-Value
形式保存数据,Key
唯一,Value
可重复,并采用 Hash 算法确定Key-Value
的存储位置从而保证其进行数据快速存取。类图如下: