57 java集合和泛型_7 _泛型集合
泛型集合
- 概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致。
- 特点:
- 编译时即可检查,而非运行时抛出异常。
- 访问时,不必类型转换(拆箱)。
- 不同泛型之间引用不能相互赋值,泛型不存在多态。
代码:
package com.wlw.collection.generic;
import com.wlw.collection.Student;
import java.util.ArrayList;
import java.util.Iterator;
//泛型集合
public class GenericAndCollection {
public static void main(String[] args) {
ArrayList arrayList1 = new ArrayList();
arrayList1.add("xxx");
arrayList1.add("ccc");
arrayList1.add(10);
arrayList1.add(20);
for (Object o : arrayList1) {
//System.out.println(o); //正常输出
//String s = (String)o; //类型转换异常
//System.out.println(s);
/*
xxx
ccc
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at com.wlw.collection.generic.GenericAndCollection.main(GenericAndCollection.java:16)
*/
}
ArrayList<String> arrayList2 = new ArrayList<>();
arrayList2.add("xxx");
arrayList2.add("asd");
arrayList2.add("dfa");
//arrayList2.add(10); //直接报错,因为只能存放String类型的数据
for (String s : arrayList2) {
System.out.println(s);
}
ArrayList<Student> arrayList3 = new ArrayList<Student>();
Student s1 = new Student("张三",20);
Student s2 = new Student("张无忌",21);
Student s3 = new Student("张大头",22);
arrayList3.add(s1);
arrayList3.add(s2);
arrayList3.add(s3);
Iterator<Student> iterator = arrayList3.iterator();
while (iterator.hasNext()){
Student student = iterator.next();
System.out.println(student.toString());
}
}
}
/*
xxx
asd
dfa
Student{name='张三', age=20}
Student{name='张无忌', age=21}
Student{name='张大头', age=22}
*/