摘要:一、概念 红黑树(R-B Tree),全称Red-Block Tree。它是一种特殊的二叉树,树中的每个节点都有颜色,红色或者黑色。 注意:NULL节点是黑色节点。 学习时可以先按照既定的规则进行调整,学会后,再去思考为什么有这些情况,然后再考虑为什么这种情况需要这么处理。 二、性质 性质1:节点是
阅读全文
摘要:[TOC] 1. 概述 本文主要针对对网上 关于HashMap在多线程环境下会形成循环链表的问题 进行一次总结. 2. 敲黑板的点 1. 只会在低于jdk1.8的版本中发生(1.6, 1.7会有, 再古老的版本我就不知道了) 2. jdk1.7的HashMap的数据结构使用的是 数组+链表 , 不存
阅读全文
摘要:[TOC] 1. 概述 LinkedHashMap还是比较简单的, 相对于HashMap, 它是有序的, 那么问题就来了, 它是怎么保持有序的? 它直接继承于HashMap, 重写或增加了一些新的关于保持Map有序的方法, 至于扩容或是数据结构等都于HashMap一样, 下面我们重点分析它是怎么保持
阅读全文
摘要:[TOC] 1. 概述 HashMap是一种key/value形式的存储结构. 它综合了数组(查询容易, 插入和删除困难)和链表(插入和删除容易, 查询困难)的特点. HashMap的核心点就是 hash算法 和 红黑树算法 . HashMap是 无序的 . 2. 存储结构 HashMap的存储结构
阅读全文
摘要:[TOC] 1. 概述 1. 通过类名可以想象到, 该类的结构是一个链表结构. 2. 但是它是一个类似于数组的链表, 意思就是普通的添加操作与数组类似, 将新元素添加到链表的尾端. 并支持通过下标来进行访问. 3. 它实现了Deque接口, 提供了栈和队列的操作, 也就是该类的主要功能吧. 4. 对
阅读全文
摘要:[TOC] 1. 概述 为了弥补普通数组无法自动扩容的不足,Java提供了集合类,其中ArrayList就对数组进行了封装,使其可以自动的扩容或缩小长度。 因为是对数据进行了封装,所以底层存储结构是数组结构。可以想象的到,数组长度的自动变化必须需要开辟新内存,然后进行数组元素的拷贝。 因为数组,所以
阅读全文