HashSet
1.存储无序
2.没有索引
3.元素不能重复
HashSet如何保证元素不重复?
重写 hashCode() equals() 两个方法,继承自Object类(IDEA快捷生成)
LinkedHashSet
1.存取有序
2.没有索引
3.元素不能重复
TreeSet
1.没有索引
2.元素不能重复
3.会对元素进行排序
TreeSet使用的TreeMap来实现的。而TreeMap的底层实现就是红黑树。
TreeSet 中可以【自定义排序规则】,有两种实现方式
1.Comparable接口public interface Comparable<T>
在Javabean类中直接实现该接口,并且重写CompareTo方法
2.Comparator接口public interface Comparator<T>
在创建TreeSet时,使用有参构造,传递匿名内部类,实现compare方法
二叉查找(搜索)树
每个节点最多有两个子节点
每个节点的左子节点都比自己小,右子节点都比自己打
添加节点:自上而下比较,小的在左,大的在右
平衡二叉树:
1.左右子树高度差<=1
2.所有节点都满足1条件
左旋:平衡二叉树加上一个节点后,平衡被破坏。左旋调节平衡
根节点的右子节点上位
旧的根节点成为左子节点
上位的右子节点原本的左子节点成为新平衡二叉树的左子节点的右子节点
右旋:类似
红黑树
红黑树的红黑规则有哪些
1. 每一个节点或是红色的,或者是黑色的
2. 根节点必须是黑色
3. 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil 视为叶节点,每个叶节点(Nil)是黑色的
4. 如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连 的情况)
5. 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点
添加新节点的父节点是红色,叔叔节点是黑色。父节点变黑,祖父节点变红。并进行相应的旋转