美文网首页自动化测试
JDK1.8中的HashMap数据结构

JDK1.8中的HashMap数据结构

作者: 山东大葱哥 | 来源:发表于2020-01-24 06:30 被阅读0次

JDK1.8中的HashMap数据结构使用了数组+链表+红黑树,数组和链表结构和JDK1.7中的基本一致,红黑树是一个新增的方式,具体实现类是内部类TreeMap。
这是为了为了解决hash碰撞严重导致链表过长后查询占据较低的缺陷引进的。
想深入了解红黑树,需要对树、二叉树23树、234树有一定的认识,HashMap信你得红黑树是234树的一种具体实现,红黑树就是一个能维持相对平衡的二叉树,使用红黑两种颜色来划分节点,红黑树存在如下约束条件:

  1. 每个节点要么是黑色,要么是红色。(节点非黑即红)
  2. 根节点是黑色。
  3. 每个叶子节点(NULL)是黑色(为了简单期间,一般会省略该节点)。
  4. 如果一个节点是红色的,则它的子节点必须是黑色的。(也就是说父子节点不能同时为红色)
  5. 从一个节点到该节点的每一个叶子子孙节点的所有路径上包含相同数目的黑节点。(这一点是平衡的关键)
  6. 新插入节点默认为红色,插入后需要校验红黑树是否符合规则,不符合则需要进行操作。

相关文章

  • HashMap

    1.HashMap数据结构 JDK1.7,HashMap由数组和链表组成;JDK1.8,HashMap中增加了红黑...

  • 源码系列 - 一行一行分析 HashMap 源码

    1 数据结构 开始之前,先简单介绍下 HashMap 数据结构,如下图(jdk1.8) 如上图, HashMap ...

  • HashMap

    元素存储: HashMap的数据结构: JDK1.7中是数组+ 单链表的数据结构。JDK1.8及之后是数组+链表+...

  • HashMap源码详解

    这篇文章打算详细理一下HashMap的源码,可能会比较长,基于JDK1.8 HashMap数据结构 HashMap...

  • HashMap总结分析

    摘要  HashMap是使用最为频繁的映射类型数据结构,底层采用了数组加链表的数据结构。在JDK1.8中对Hash...

  • [算法之链表]-反转单链表

    链表是一种数据结构,应用在很多场景中,如 JDK1.8 中得HashMap,ConcurrentHashMap等集...

  • HashMap底层原理

    HashMap HashMap底层数据结构 JDK1.7及之前:数组+链表 JDK1.8:数组+链表+红黑树 Ha...

  • Java集合——HashMap

    简介 本篇介绍基于JDK1.8的HashMap的数据结构以及主要方法的源码。HashMap基于散列表,继承了Abs...

  • HashMap面试宝典

    前言 本文源码分析基于jdk1.8版本(持续更新中) 1、HashMap数据结构与工作原理 这是基础中的基础,这个...

  • 红黑树的原理和常见操作

    1. 概述 在jdk1.8中,HashMap和ConcurrentHashMap中都采用了红黑树这一数据结构。即当...

网友评论

    本文标题:JDK1.8中的HashMap数据结构

    本文链接:https://www.haomeiwen.com/subject/eldcthtx.html