1.使用泛型
/*
创建集合对象,使用泛型
好处:1.避免了类型转换的麻烦,存储什么类型,取出的就是什么类型
2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候就会报错了)
弊端:泛型是什么类型,只能存储什么类型的数据
*/
private static void show2() {
ArrayList<String> list=new ArrayList<>();
list.add("abc");
//使用迭代器遍历集合list
//获取迭代器
Iterator<String> iterator = list.iterator();
//遍历取出元素
while (iterator.hasNext()){
String s = iterator.next();
System.out.println(s+"-->"+s.length());
}
}
2.不使用泛型
/*
创建集合对象,不使用泛型
好处:集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据
弊端:不安全,会引发异常
*/
private static void show1() {
ArrayList list=new ArrayList();
list.add("abc");
list.add(1);
//使用迭代器遍历集合list
//获取迭代器
Iterator iterator = list.iterator();
//遍历取出元素
while (iterator.hasNext()){
//取出元素
Object obj = iterator.next();
System.out.println(obj);
//想要使用String类特有的方法length获取字符串长度;不能使用,因为多态
//需要向下转型
//会抛出类型转换异常,不能把Integer转换为String类型
String s=(String)obj;
System.out.println(s.length());
}
}