HashMap源码解析 1. 类结构 上图可以看到,HashMap继承了AbstractMap,实现的接口有,Map、Cloneable、Serializable。 HasMap的核心数据类型是链表或红黑树的数组,数组和List结构一样可以实现扩容。并且有实现相对应的用于通过计算key对象的hash ...
分类:
其他好文 时间:
2020-05-25 22:10:01
阅读次数:
66
1. set set 是关联容器,含有键值类型对象的已排序集,搜索、移除和插入拥有对数复杂度。 set 内部通常采用红黑树实现。和数学中的集合相似, set 中不会出现值相同的元素。 插入与删除操作: insert(x) : 当容器中没有等价元素的时候,将元素 x 插入到 set 中 erase(x ...
分类:
其他好文 时间:
2020-05-24 20:54:37
阅读次数:
63
JDK1.7和1.8 HashMap区别: 1. ******* 数组+链表 改成了 ****数组+链表或红黑树; 高位使用红黑算法可以提高操作效率 可以说对java大数据操作提高了很多 所以很多面试喜欢问 2.表的插入方式从头插法改成了尾插法,简单说就是插入时,如果数组位置上已经有元素,1.7将新 ...
分类:
其他好文 时间:
2020-05-24 13:38:47
阅读次数:
74
(1)List:有序,可重复。 ArrayList:底层实现的数据结构是数组,查询快,增删慢。线程不安全,效率高 LinkedList:底层实现的数据结构是链表,查询慢,增删块。线程不安全,效率高 Vector:底层实现的数据结构是数组,查绚块,增删慢。线程安全,效率低。 (2)Set:无序,唯一。 HashSet:底层数据结构是哈希表(无序,唯一)。保证元素唯一性依赖于
分类:
其他好文 时间:
2020-05-24 09:35:28
阅读次数:
72
1. 索引相关 二叉树:容易退化成链表 红黑树:数据量大是,高度过大,导致磁盘IO增加 B树 B+树 2. MyISAM 用B+树 ...
分类:
其他好文 时间:
2020-05-22 19:51:33
阅读次数:
37
红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。阅读以下需要了解普通二叉树的插入以及删除操作。红黑树是在普通二叉树上,对没个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下五条性质
分类:
其他好文 时间:
2020-05-22 10:12:24
阅读次数:
85
[TOC] Part 1 JML 规格(specification) 规格既是一种描述,也是一种契约。一方面,规格描述了一个复杂的、具体的代码实现的行为逻辑。比如,使用 的用户并不需要知道该类解决哈希冲撞的具体方法,也不需要知道这个类会不会使用红黑树。这极大地方便了使用者。另一方面,规格是调用者和被 ...
分类:
其他好文 时间:
2020-05-21 21:10:01
阅读次数:
59
一、概述 容器主要包括 Collection 和 Map 两种: Collection 存储着对象的集合 Map 存储着键值对(两个对象)的映射表。 Collection: Map: 1. Set TreeSet: 基于 红黑树 实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 ...
分类:
编程语言 时间:
2020-05-20 14:28:09
阅读次数:
57
什么是红黑树? 红黑树的定义 每个节点或者是红色的,或者是黑色的。 根节点是黑色的。 每一个叶子节点(最后的空节点)是黑色的。 如果一个节点是红色的,那么他的孩子节点都是黑色的。 从任意一个节点到叶子节点,经过的黑色节点是一样的。 直接看到这些定义是非常难以理解的,红黑树为什么这样定义? 在算法4这 ...
分类:
其他好文 时间:
2020-05-18 20:42:42
阅读次数:
42
原理参考:https://blog.csdn.net/striveb/article/details/84657326 总结: 为什么当桶中键值对数量大于8才转换成红黑树,数量小于6才转换成链表? 参考:https://blog.csdn.net/xingfei_work/article/detai ...
分类:
其他好文 时间:
2020-05-17 14:47:33
阅读次数:
63