泛型
<>:在不知道传入什么类型参数的时候,使用泛型
1、泛型接口
interface Inter<T>{
public abstract void show(T t);
}
实现接口可以继续将参数设置成泛型,然后在创建实现类的时候确定参数类型
也可以直接确定参数类型
2、泛型类
class A<T>{
private T t;
}
//在创建类对象的时候确定参数类型
3、泛型方法
public static <T> void show(T t){
sout(t);
}
4、泛型的通配符
/<?>:任意的类型
/<? extends Number>:Number或者Number的子类
/<? super Number>:Number或者Number的父类
TreeSet集合:
set:没有索引、无序、没有重复元素
TreeSet:底层:红黑树、提高查找速率 可以对元素排序
HashSet:可以对元素去重
TreeSet集合排序:
1、自然排序(comparable接口)
a: 让自定义的类实现Comparable接口,复写compreTo方法
b: 在compareTo方法中提供排序规则,如果compareTo方法返回0说明元素重复
- 比较器排序(Comparator接口)
a: 在创建TreeSet集合时,把Comparator对象作为参数传递
b: 在创建Comparator对象时,复写compare方法,提供排序规则,如果compare方法返回0说明元素重复。
- 如何选择排序方式:
a: 优先使用自然排序
b: 如果API中有些类已经实现了Comparable接口,提供了默认排序规则,但是这个规则不满足要求.这时可以使用比较器排序自定义排序规则.
扩展:API提供了一个Collections工具类,可以对List集合排序
ArrayList list = new ArrayList<>();
list.add(new Student(“wangwu”,20));
list.add(new Student(“lis”,30));
list.add(new Student(“zhaoliu”,10));
list.add(new Student(“qianqi”,40));
//对list进行排序,Collections
Collections.sort(list, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge()-o2.getAge();
}
});
System.out.println(list);
二叉树
二叉树:一个跟节点,每一个节点最多只有两个子节点
二叉查找树:(二叉搜索树、二叉排序树)任意一个节点左边的都比自己小,右边的比自己大
二叉平衡树:任何一个节点它的左子树和右子树的高度差不超过1;
添加元素时,可能会导致二叉平衡树不平衡,这时候需要左旋或者右旋进行调整。