泛型

jdk5.0新特性—泛型

1、泛型的概念:

问题:集合元素对类型没有限制,存入对象后它不记忆对象类型,取出对象时必须进行强制转换,容易出错,调试困难。

泛型:参数化类型,用参数指定元素的类型,限定类的操作数据的类型。即灵活,又确定。

2、使用泛型的基本语法:<类型1,类型2,…> ,在创建对象时使用。

类1或接口<类型实参> 对象名称=new 类2<类型实参>();

其中:“类2”可以是“类1”本身,还可以是“类1”的子类,也可以是接口的实现类。

      类2的类型实参,必须与类1的类型实参相同。

例如:ArrayList<String> arrList=new ArrayList<String>();

         List<String>  list=new ArrayList<String>();   //list集合对象具有List接口的所有方法。

     List<String>  list=new LinkedList<String>();  //list集合对象具有List接口的所有方法,但不具有LinkedList特有的方法(与First和Last相关方法)。

     Map<String,Integer> map=new HashMap<String,Integer>();

注意:(1)如果类2和类1相同,则创建的对象具有类2的所有属性和方法。

     (2)如果类2是类1或接口的子类或实现类,创建的对象不具有类2自己添加属性和方法,只能使用类2继承的属性和方法。

3、在集合中使用泛型的好处

(1)使集合记住元素类型,取出元素时不再需要进行强制转换。

(2)指定了元素类型,就不能添加其他类型的元素,否则会报告语法错误。

(3)只要编译不出错,运行时也不会出错。

(4)泛型时程序更通用,代码更简洁(不需要强制转换),更加容易维护。

4、在定义接口、类中使用泛型:一般使用T、E、K、V等形式的参数表示形参。例如:Map<k,V>

5、类型统配符:使用<?>表示各种不同的类型,还有两种表示方式:

上限型:<? extends List>:表示继承自List接口的所有子类,即包含List接口的所有子接口和子类。

下限型:<? super HashSet>:表示HashSet类的所有父类和接口,Set接口,Collection接口。

6、Collections:集合工具类,提供了一些操作集合的静态方法。

(1)sort(List list);  元素从小到大排序。

(2)shuffle(List list); 打乱原有顺序随机排序;

(3)reverse(List list); 前后翻转

posted @ 2020-07-13 07:22  wxb293  阅读(110)  评论(0)    收藏  举报