@ "TOC" JDK1.7:数组+链表 JDK1.8:数组+链表+红黑树 前五个问题环境用的是是JDK1.7,后面全部是1.8 1、Hash的计算规则? 简单的说是个“扰动函数”,目的是为了使散列分布的更加均匀。 具体算法是用key的Hashcode值右移16位,将hashcode高位和低位的值进 ...
分类:
其他好文 时间:
2020-01-19 22:35:07
阅读次数:
138
【前言】自己整理的东西才是自己的。【概念】红黑树(RedBlackTree)别名:对称二叉B树,是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的:它可以在O(logn)时间内做查找,
分类:
编程语言 时间:
2020-01-19 15:17:49
阅读次数:
88
一、结点类与红黑树类: (一)结点类基本数据成员: 1.左右子结点指针域 2.父结点指针域,方便回访父结点 3.有序 前驱 / 后继 指针域,迭代访问元素,提供一种顺序存储的假象 4.结点颜色,利用红黑规则,保持树的平衡。 (二)结点类的基本成员函数: 两个重载的构造函数,构造红色的新结点 (三)红 ...
分类:
其他好文 时间:
2020-01-18 14:22:37
阅读次数:
66
从2-3树的角度对红黑树进行解读,画了20张图,通俗易懂,看完彻底明白红黑树。 ...
分类:
其他好文 时间:
2020-01-17 09:41:21
阅读次数:
511
说明 HashSet保证元素的唯一性,可是元素存放进去是没有顺序的。 在HashSet下面有一个子类java.util.LinkedHashSet,它是 链表 + 哈希表(数组+链表 或者 数组+红黑树)组合的一个数据结构。 即相对HashSet而言,多了一个链表结构。多了的那条链表,用来记录元素的 ...
分类:
编程语言 时间:
2020-01-15 09:32:52
阅读次数:
72
Java8,java9和java11的特性总结!Java8的主要新特性Lambda表达式Lambda允许把函数作为一个方法的参数传递进方法中。作用:解决Java被诟病的匿名内部类的问题。接口中可增加了默认方法作用:在接口中也可以有实现方法了。HashMap底层数据结构的变化java8之前,HashMap底层的数据结构是数组+链表实现的,Java8之后是数组+链表+红黑树实现的,当链表的长度超过8之
分类:
编程语言 时间:
2020-01-14 11:35:40
阅读次数:
189
TreeMap 1. TreeMap 实现了 NavigableMap 接口,而 NavigableMap 接口继承自 SortedMap 接口,所以 TreeMap 是有序的。 2. TreeMap 底层是红黑树,所以时间复杂度为 log(n)。 3. TreeMap 并不是线程安全的。 4. T ...
分类:
编程语言 时间:
2020-01-12 21:47:35
阅读次数:
79
红黑树 平衡二叉树 定义:二叉树中任意一个节点的左右子树的高度相差不能大于 1。 完全二叉树、满二叉树其实都是平衡二叉树,非完全二叉树也有可能是平衡二叉树。 平衡二叉查找树 任何节点的左右子树高度相差不超过 1,是一种高度平衡的二叉查找树。 符合二叉查找树的特点:左子节点小于父节点,右子节点大于父节 ...
分类:
编程语言 时间:
2020-01-11 22:32:57
阅读次数:
104
map:hash映射,提供key和value,实现一对一的映射 ①头文件:#include <map> ②使用方法:map<type1 , type2> Map; ③实现方法:map用红黑树实现,map先按照type1升序排序,再按type2升序排序。因此map是有序的,无须对map进行排序 ④通过 ...
分类:
其他好文 时间:
2020-01-11 20:05:52
阅读次数:
80
画了一系列树的动画,从二分搜索树,到AVL树,再到2 3树,再到基于2 3树的红黑树,都可以发现这些树都跟二叉查找树很像啊。 嘿嘿!二分搜索树就是二叉查找树;AVL树也是一颗二分搜索树,只多了高度差的限制;2 3树虽满足二分搜索树的性质,但不是一颗二分搜索树,2 3树由2 节点和3 节点组成的,满足 ...
分类:
其他好文 时间:
2020-01-11 16:41:30
阅读次数:
65