泛型介绍
- JDK5引入的, 可以在编译阶段约束操作的数据类型, 并进行检查
- 注意 : 泛型默认的类型是Object
泛型的好处
- 统一数据类型,将运行期的错误提升到了编译期
- 统一数据类型
常见的泛型标识符 : E V K T
E : Element
T : Type
K : Key(键)
V : Value(值)
总结:
1.泛型类
创建对象的时候确定具体类型
2.泛型方法
非静态: 泛型是根据类的泛型去匹配的
静态: 需要声明出自己独立的泛型
3.泛型接口 :
类实现接口的时候,直接确定类型
延续接口的泛型,等创建对象的时候再确定
4.泛型限定 :
? (任意类型)
? extends E (只能接收 E 或者是 E 的子类)
? super E (只能接收 E 或者是 E 的父类)
数据结构(树)
- 介绍:
TreeSet集合
- 作用 : 对集合中的元素进行排序操作 (底层红黑树实现)
TreeSet的两种排序方式
-
自然排序
-
比较器排序
自然排序
1.类实现 Comparable 接口
2.重写 compareTo 方法
3.根据方法的返回值, 来组织排序规则
-
负数 : 左边走
-
正数 : 右边走
-
0 : 不存
比较器排序
1.在 TreeSet 的构造方法中, 传入 Compartor 接口的实现类对象
2.重写 compare 方法
3.根据方法的返回值, 来组织排序规则
-
负数 : 左边走
-
正数 : 右边走
-
0 : 不存
Java已经写好类, 大多数都具有自然排序的规则, 这些规则放在源代码中, 我们无法修改
(String, Integer, Double…)
String : 默认是字典顺序排序
Integer : 默认是升序排序
Double : 默认是升序排序
如果我们要实现的需求, 排序规则, 跟已经具备的自然排序, 不一样.
这时候就要使用比较器排序.
- 重点: 如果同具备自然排序, 和比较器排序, 会优先按照比较器进行排序操作
默认是升序排序
如果我们要实现的需求, 排序规则, 跟已经具备的自然排序, 不一样.
这时候就要使用比较器排序.
- 重点: 如果同具备自然排序, 和比较器排序, 会优先按照比较器进行排序操作