引出
集合模仿着数组的做法,在创建对象时候明确元素的数据类型。这种技术称为泛型。
泛型:“参数化类型”,把类型当作参数一样的传递。
格式:<数据类型> 此处的类型只能是引用类型。
好处:把运行时期的问题提到了编译期间;避免了强制类型转换;优化了程序设计,解决了黄色警告线。
Jdk API文档中的<E>
表示要使用泛型。一般来说就是在集合中使用。
之前集合的代码改进
加泛型后,例如:
ArrayList<String> l= new ArrayList<String>();//ArrayList后加了<E>
//迭代器遍历:
Iterator<String> it= l.iterator();//Iterator后加了<E>
while(it.hasNext()){
String s= it.next();//用了泛型后不用再强转类型
System.out.println(s);
}
//size()结合get(index)遍历
for(int i=0; i<l.size();++i){
String s= l.get(i);//不用再强转
System.out.print(s+" ");
}
存储自定义对象并遍历(使用泛型):
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo2 {
public static void main(String[] args){
//创建集合
ArrayList<Student> l= new ArrayList<Student>();
//创建学生对象
Student s1 = new Student("林青霞", 27);
Student s2 = new Student("林志玲", 40);
Student s3 = new Student("凤姐", 35);
Student s4 = new Student("芙蓉姐姐", 18);
Student s5 = new Student("翠花", 16);
Student s6 = new Student("陈红", 27);
Student s7 = new Student("林依晨", 18);
//添加对象到集合
l.add(s1);
l.add(s2);
l.add(s3);
l.add(s4);
l.add(s5);
l.add(s6);
l.add(s7);
//遍历集合方式一
for(int i=0; i<l.size();++i){
Student s= l.get(i);
System.out.println(s.getName()+" "+s.getAge());
}
//遍历集合方式二
Iterator<Student> it= l.iterator();
while(it.hasNext()){
Student s= it.next();
System.out.println(s.getName()+" "+s.getAge());
}
}
}