泛型方法:
方法中形参不确定时:
方案1:使用类名后面定义的泛型(所有方法都能用)
方案2:在方法申明上定义自己的泛型(只有本方法能用)
泛型接口:
如何使用一个带泛型的接口:
1.实现类给出具体的类型
2.实现类延续泛型,创建实现类对象时再确定类型
泛型的继承和通配符:
泛型不具备继承性,但是数据具备继承性
泛型的通配符:
?表示不确定的类型
?可以进行类型的限定
?extends E:表示可以传递E或者E所有的子类类型
? super E:表示可以传递E或者E所有的父类类型
应用场景:
1.如果我们在定义类、方法、接口的时候,如果类型不确定,就可以定义泛型类、泛型方法、泛型接口
2.如果类型不确定,但是能知道以后能传递某个继承体系中的,就可以使用泛型的通配符
泛型的通配符:
关键点:可以限定类型的范围
左右的情况:先进行局部左旋转化为左左
右左的情况:先进行局部右旋转化为右右
平衡二叉树不是红黑树
平衡二叉树:
高度平衡
当左右子树高度差超过1时,通过旋转保持平衡
红黑树:
是一个二叉查找树
但是不高度平衡
条件:特有的红黑规则
红黑规则
1.每一个节点或是红色的,或者是黑色的
2.根节点必须是黑色
3.如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点是黑色的
4.如果某个节点时红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)
5.对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点
红黑树的添加规则:
默认颜色是红色(效率高)
set:
无序:存取顺序不一致
不重复:可以去重复
无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素
不重写就用的是地址值
TreeSet集合默认的规则:
对于数值类型:Integger,Double,默认按照从小到大的顺序进行排序
对于字符,字符串类型:按照字符在ASCLL码表中的数字进行升序排序
TreeSet的排序规则:
让类实现comparable接口,重写抽象方法(默认排序)
创建TreeSet对象时候,传递比较器Comparator指定规则(比较器排序)