【1】什么是泛型(Generic):
泛型就相当于标签
形式:<>
集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把数据类型设计为Object,
JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其它部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,
因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。
Collection<E> ,Iterable<E> 这个<E>就是类型参数,即泛型。
【2】没有泛型的时候使用集合:
package com.msb.test01; import java.util.ArrayList; /** * @author : liu * 日期:17:16:00 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test01 { //这是一个main方法:是程序的入口 public static void main(String[] args) { //创建一个ArrayList集合,像这个集合存入学生的成绩: ArrayList al = new ArrayList(); al.add(98); al.add(18); al.add(39); al.add(60); al.add(83); al.add("丽丽"); //对集合遍历查看 for (Object o:al ) { System.out.println(o); } } }
如果不使用泛型的话,有缺点:
一般我们在使用的时候基本上往集合中存入的都是相同数据类型的数据---》便于管理,所以现在什么引用数据类型都可以存入集合,不方便;
【3】JDK1.5之后集合中使用泛型
package com.msb.test01; import java.util.ArrayList; /** * @author : liu * 日期:17:16:00 * 描述:IntelliJ IDEA * 版本:1.0 */ public class Test01 { //这是一个main方法:是程序的入口 public static void main(String[] args) { //创建一个ArrayList集合,像这个集合存入学生的成绩: //加入泛型的优点:在编译的时候就会对类型进行检查,不是泛型对应的类型就不可以加入这个集合。 ArrayList<Integer> al = new ArrayList<Integer>(); al.add(98); al.add(18); al.add(39); al.add(60); al.add(83); /*al.add("丽丽"); al.add(9.8);*/ //对集合遍历查看 /*for (Object o:al ) { System.out.println(o); }*/ for (Integer i:al ) { System.out.println(i); } } }
【4】泛型总结:
(1)JDK1.5以后
(2)泛型实际就是一个<>引起来的参数类型,这个参数类型具体在使用的时候才会确定的具体的类型
(3)使用了泛型以后就可以确定集合中存放数据类型,在编译期的时期就可以检查出来。
(4)使用泛型你可能觉德很麻烦,实际使用了泛型才会简单,后续的遍历等操作简单。
(5)泛型对应的类型都是引用数据类型,不能是基本数据类型
(6)
ArrayList<Integer> al = new ArrayList<Integer>();
JDK1.7以后可以写为
ArrayList<Integer> al = new ArrayList();
---<>---钻石运算符
标签:ArrayList,al,引入,add,类型,泛型,集合 From: https://www.cnblogs.com/jeldp/p/16836885.html