本文主要是介绍jdk7和jdk8中HashMap的底层数据结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
jdk7和jdk8中HashMap的底层数据结构
对于HashMap的底层数据结构在Java7和Java8中的实现是不同的,在Java7中是采用数组+链表的数据结构进行实现,而在Java8中是采用数组+链表+红黑树的数据结构实现的。
说时迟那时快,刚话说完,从兜里拿出笔和纸,啪地一声放在桌子上画了起来,许久之后,出现了两幅jdk7和jdk8的HashMap的内部结构图:
上图是jdk7内部结构图,以Entry<K,V>[]数组作为哈希桶,每个哈希桶的后面又可以连着一条单向链表,在链表中以k,v的形式存储数据,并且每一个节点有指向下一节点的指针。
上图是jdk8的HashMap的内部结构图,此时在源码源码中就不再使用Entry<K,V>[]作为数组,而是使用Node<K,V>[]数组作为哈希桶,每个哈希桶的后面也可能连着一条单向链表或者红黑树。
当单向链表的值>8的时候,链表就会转换为红黑树进行存储数据,改进后无疑大大优化了大量数据下数据查询的性能。
这篇关于jdk7和jdk8中HashMap的底层数据结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!