1. 泛型的理解和好处
1.1 使用传统方法的问题
1. 不能对加入到集合 ArrayList中的数据类型进行约束(不安全)
2. 遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响
1.2 泛型的好处
1. 编译时,检查添加元素的类型,提高了安全性
2. 减少了类型转换的次数,提高效率[说明]
3. 不再提示编译警告
2. 泛型的语法
2.1 泛型的声明
interface 接口<T>{} 和 class 类<K,V>{}
比如:List, ArrayList
说明:
1. 其中,T,K,V不代表值,而是表示类型。
2. 任2意字母都可以。常用T表示,是Type的缩写
2.2 泛型的实例化
要在类名后面指定类型参数的值(类型)。如:
1. List<String> strList = new ArrayList<String>();[举例说明]
2. lterator<Customer> iterator = customers.iterator();
2.3 案例
import java.util.ArrayList;public class Test01 {public static void main(String[] args) {//<E>:表示泛型.限制集合中所存的元素类型。 如果不使用默认Object.
// ArrayList list=new ArrayList();
// list.add(17);
// list.add("hello");
// list.add(new Object());
// list.add(true);
//
// Object o = list.get(0);
// String o2 = list.get(1);ArrayList<Integer> list=new ArrayList<>();list.add(15);Integer integer = list.get(0);ArrayList<Student> list2=new ArrayList<>();list2.add(new Student(1,"张三1",15.5));list2.add(new Student(2,"张三2",125.5));list2.add(new Student(3,"张三3",125.5));list2.forEach(item-> System.out.println(item));}
}
2.4 泛型使用的注意事项和细节
1. interface List<T>{} ,public class HashSet<E>{}.. 等等
说明:T,E只能是引用类型
看看下面语句是否正确?
List<Integer> list = new ArrayList<Integer>();//OKList<int> list2 = new ArrayList<int>();//错误
2. 在给泛型指定具体类型后,可以传入该类型或者其子类类型3. .泛型使用形式
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<>();[说明:]
4. 如果我们这样写 List list3 = new ArrayList();默认给它的 泛型是[<E>E就是 Object