1.1 概述 TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解: 红黑树的每个节点都只能是红色或者黑色 根节点是黑色 每个叶节点(NIL节点,空节点)是黑色的、如果一个结点是红的,则它两个子节点都是黑的、也就是说在一条路径上不能出现相邻的两个红色结点 从任一 ...
分类:
编程语言 时间:
2020-08-09 11:51:46
阅读次数:
76
HashMap jdk1.7版本,底层是数组+链表,元素的插入使用头插法,可能形成数据丢失或环形链表。 jdk1.8版本,底层是数组+链表+红黑树,元素的插入使用尾插法,数据覆盖的情况。 扩容机制:LoadFactory默认0.75,创建空数组重新Hash。 resize线程不安全:多线程之间put ...
分类:
编程语言 时间:
2020-08-09 09:22:43
阅读次数:
88
写在前面红黑树,对很多童鞋来说,是既熟悉又陌生。学校中学过,只了解大概;工作中不怎么使用,但面试又是重点。每次需要查看红黑树内容时都很难以更生动形象的方式来理解其内容。没错,本文内容就是要解决这个问题,用简单的语言,搭配静图和动图(利用大脑图形记忆方式),让你对红黑树有更深入的了解和更清晰的记忆,希望小伙伴们再次遇到红黑树的问题不至于头大,建议读该文章姿势:打开两个页面,一个页面看图片和内容,一个
分类:
其他好文 时间:
2020-08-02 10:18:58
阅读次数:
135
一、索引的本质 没有索引的sql是没有灵魂的,查询速度是非常慢的。 本质:索引是帮助MySql快速获取数据的排好序的数据结构。 二、 索引数据结构: 二叉树 :层级太高,自增主键索引甚至退化成了链表 红黑树 :红黑树是平衡二叉树的一种,相对于二叉树好点,但是当数据大时,层级还是很高,查询速度慢。 H ...
分类:
数据库 时间:
2020-07-30 21:44:40
阅读次数:
80
一,HashTable哈希表,它相比于hashMap结构简单点,它没有涉及红黑树,直接使用链表的方式解决哈希冲突。我们看它的字段,和hashMap差不多,使用table存放元素privatetransientEntry<?,?>[]table;privatetransientintcount;privateintthreshold;privatefloatloadFactor;priv
分类:
其他好文 时间:
2020-07-30 01:14:52
阅读次数:
51
在阅读其他博主关于红黑树增删实现的时候,博主们大多直接使用文字图片描述,对整个增删整体的流程突出的不太明显(当然dalao们写得还是很棒的,不然我也写不出这篇文章)。
本文承接上篇,讲解红黑树中最复杂的删除操作,以一张流程图,让大家换一个角度来了解整个删除操作的实现过程。 ...
分类:
编程语言 时间:
2020-07-24 09:39:05
阅读次数:
72
简介: 在jdk1.8中,hashmap有了较大的优化,底层实现由之前的“数组+链表”改为了“数组+链表+红黑树”。jdk1.8的hashmap的数据结构如图所示,当链表节点较少时仍然以链表形式存在,当链表节点较多时(大于8)会转化为红黑树。 重要知识点: 1、文章中头节点指的是table表上索引位 ...
分类:
其他好文 时间:
2020-07-21 09:30:18
阅读次数:
68
根据线性表的实际存储方式,分为两种实现模型: 顺序表 ,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。 链表 ,将元素存放在通过链接构造起来的一系列存储块中。 一、顺序表 在Java中,顺序表的结构主要有:数组、ArrayList ArrayList 的 本质是对 ...
分类:
编程语言 时间:
2020-07-19 17:47:51
阅读次数:
71
问:如何决定使用 HashMap 还是 TreeMap? 介绍 TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。 Has ...
分类:
其他好文 时间:
2020-07-14 10:39:15
阅读次数:
55
Java 中的 TreeMap 是使用红黑树实现的。 ...
分类:
编程语言 时间:
2020-07-12 19:05:59
阅读次数:
88