1,泛型:
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型只在编译阶段有效
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。
1.1 泛型类:泛型类型用于类的定义中,被称为泛型类。是在实例化类的时候指明泛型的具体
定义:
public clsaa 类名<T>{
//成员变量,可以使用T类型
private T name;
//成员方法,参数和返回值都可以使用泛型
public void setName(T t){
....
}
public T getName(){
........
}
}
1.2 泛型接口:在接口中有不确定的数据类型,在实现接口时确定其数据类型,也可以将泛型沿用到类上,
定义:
//定义泛型接口
public interface 接口名<T>{
public void method(T t);
}
//实现接口,确定数据类型
public class InterImpl implement 接口名<String>{
public void method(String t){
...
}
}
1.3 泛型方法:在方法中有不确定的数据类型,调用方法时确定其数据类型
定义:
//定义在方法上的泛型<T>,只能在方法里面用
public static <T> void show(T t){
...
}
//调用方法,参数时什么类型,<T>就是什么类型
show("hellow");
show(200);
1.4 泛型的通配符:一般用在方法参数的位置,对参数的类型进行限定
<?>:任意的类型
<? extend Number>:Number或者Number的子类
<? super Number>:Number或者其父类
2 set集合
特点: 存取无序,无索引,自动排序(或按照给定的方法排序)
TreeSet: