jdk7和jdk8中HashMap的底层数据结构

对于HashMap的底层数据结构在Java7和Java8中的实现是不同的,在Java7中是采用数组+链表的数据结构进行实现,而在Java8中是采用数组+链表+红黑树的数据结构实现的。

说时迟那时快,刚话说完,从兜里拿出笔和纸,啪地一声放在桌子上画了起来,许久之后,出现了两幅jdk7和jdk8的HashMap的内部结构图:

jdk7和jdk8中HashMap的底层数据结构

上图是jdk7内部结构图,以Entry<K,V>[]数组作为哈希桶,每个哈希桶的后面又可以连着一条单向链表,在链表中以k,v的形式存储数据,并且每一个节点有指向下一节点的指针。

jdk7和jdk8中HashMap的底层数据结构

上图是jdk8的HashMap的内部结构图,此时在源码源码中就不再使用Entry<K,V>[]作为数组,而是使用Node<K,V>[]数组作为哈希桶,每个哈希桶的后面也可能连着一条单向链表或者红黑树。

当单向链表的值>8的时候,链表就会转换为红黑树进行存储数据,改进后无疑大大优化了大量数据下数据查询的性能。

相关文章:

  • 2021-12-09
  • 2021-10-08
  • 2022-01-06
  • 2022-01-18
  • 2022-12-23
猜你喜欢
  • 2021-06-03
  • 2022-12-23
  • 2021-09-10
  • 2021-08-20
  • 2021-05-30
  • 2022-12-23
相关资源
相似解决方案