集合可以存储任意类型的对象,当我们存储了不同类型的对象,就可能在转换时出现类型转换异常,所以java提供了泛型机制。
泛型:是一种广泛的类型,把明确数据类型的工作提前到了编译时期。
泛型的好处:避免了类型转换的问题,可以简化代码的书写。
//使用集合存储自定义对象并遍历
public class Generics {
public static void main(String[] args) {
//创建集合对象
Collection<Student> c = new ArrayList<Student>();
//创建学生对象
Student s = new Student("李倩倩",20);
Student s2 = new Student("樊浩岚",20);
//添加学生对象
c.add(s);
c.add(s2);
//遍历学生集合
Iterator<Student> it = c.iterator(); //获取迭代器对象
while(it.hasNext()){
/*Student str = (Student)it.next();
System.out.println(str);*/
Student st = it.next();
System.out.print(st.name);
System.out.println(st.age);
}
}
}
---------------------------------------------
class Student{
String name;
int age;
public Student(String name,int age){
this.name = name;
this.age = age;
}
}
2.增强for:foreach,一般用于遍历集合或数组。
格式:for(元素类型 变量:集合或数组对象){
可以直接使用变量;
}
例:public class ForeachDemo{
public static void main(String [ ] args) {
//创建集合对象
Collection c = new ArrayList();
//添加元素
c.add(“hello”);
c.add(“world”);
c.add(“java”);
//增强for遍历集合
for(Object obj : c) {
System.out.println(obj);
} } }
注意:假设还想对上例进行大小写或其他处理,那就需要变为String类型,但上例肯定是不行的,这就需要对上例添加泛型去自定义类型。在创建集合对象的时候就添加 Collection<String> c = new ArrayList<String>();
再利用增强for来进行遍历
for(String s : c){
System.out.println(s.toUpperCasd()); //将值变为大写
}
网友评论