不使用泛型的演示
package Day01;
import java.util.ArrayList;
import java.util.Iterator;
public class Demo01 {
public static void main(String[] args1) {
// TODO Auto-generated method stub
Show01();
}
/*
* 创建集合对象,不使用泛型
* 好处:不使用泛型,集合默认类型是object类型,可以存储任意类型的数据
* 坏处:不安全,会引发异常
*/
private static void Show01() {
// TODO Auto-generated method stub
ArrayList list = new ArrayList<>();
list.add("abc");
list.add(1);
//使用迭代器遍历list集合
//获取迭代器
Iterator iterator = list.iterator();
//使用hasnext和next来遍历集合
while (iterator.hasNext()) {
Object object=iterator.next();
System.out.println(object);
//想要使用string特有方法length来获取字符串长度,不能使用 多态object obj = "abc"
//需要向下转型
//会抛出ClassCastException类型转换异常,不能把iterator转化为string类型
String s =(String)object;
System.out.println(s.length());
}
}
}
使用泛型的演示
public class Demo01 {
public static void main(String[] args1) {
// TODO Auto-generated method stub
Show02();
}
/*
* 创建集合对象,使用泛型
* 好处:
* 1、避免了类型转换的麻烦,存储什么类型取出什么类型
* 2、把运行期出现的异常提升到了编译期
* 弊端:
* 泛型与所存储的类型相一致
*/
private static void Show02() {
// TODO Auto-generated method stub
ArrayList<String> list = new ArrayList<>();
list.add("lioyo");
//list.add(1); 整数类型报错
//使用迭代器遍历list集合
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
String s=iterator.next();
System.out.println(s+"length is:"+s.length());
}
}