TreeSet
TreeSet集合特点
元素有序,这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序,具体排序方式取决构造方法
TreeSet() : 根据其元素的自然排序进行排序
TreeSet( Comparator comparator ) : 根据指定的比较器进行排序
由于是Set集合,不包含重复元素
自然排序Comparable的使用
- 用TreeSet集合存储自定义对象,无参构造方法使用的是
自然排序对元素进行排序的 - 自然排序,就是
让元素所属的类实现Comparable接口,重写compare To(T o)方法 - 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
比较器排序Comparator的使用
- 用TreeSet集合存储自定义对象,带参构造方法使用的是
比较器排序对元素进行排序的 - 比较器排序,就是
让集合构造方法接受Comparator实现类对象,重写compare(T o1, T o2)方法 - 重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写
泛型
概述
- 本质是
参数化类型,将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型
泛型类
格式: 修饰符 class 类名 <类型> { }
范例:
1
public class Generic <T> { }
泛型方法
格式: 修饰符 <类型>返回值类型 方法名 ( 类型 变量名) { }
范例:
1
2
3public <T> void show ( T t ){
System.out.printIn(t);
}
泛型接口
格式: 修饰符 interface 接口名 <类型> { }
范例:
1
public interface Generic <T> { }
类型通配符
为了表示各种泛型List的父类,可以使用类型通配符
- 类型通配符:
<?> - List<?> : 表示元素类型未知的List,元素可以匹配
任何的类型 - 这种带通配符的List仅表示它是各种泛型List的父类,并不能把元素添加到其中
类型通配符的上限
- 类型通配符上限:
<? extends 类型> - List<? extends Number> : 表示的类型是
Number或者其子类型
类型通配符的下限
- 类型通配符下限:
<? super 类型> - List<? super Number> : 表示的类型是
Number或者其父类型
可变参数
可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了
格式: 修饰符 返回值类型 方法名 (数据类型… 变量名){ }
范例:
1
public static int sum (int... a) { }
可变参数注意事项
- 这里的变量其实是一个数组
- 如果一个方法有多个参数,包含可变参数,
可变参数要放在最后
可变参数的使用
Arrays工具类中有一个静态方法:
- public static <T> List < T > asList(T… a) : 返回由指定数组支持的固定大小的列表
- 返回的集合不能做增删操作,可以做修改操作
List接口中有一个静态方法:
- public static <E> List < E > of(E… elements) : 返回包含任意数量元素的不可变列表
- 返回的集合不能做增删改操作
Set接口中有一个静态方法:
- public static <E> Set < E > of(E… elements) : 返回一个包含任意数量元素的不可变集合
- 给元素的时候,不能给重复的元素
- 返回的集合不能做增删操作,没有修改的方法