* A:集合的遍历
* 其实就是以此获取集合中的每一个元素
* B:案例
* 把集合转成数组,可以实现集合的遍历
* public Object[] toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
package com.wsq.bean;
//创建Student类
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setNaem(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() { //这里得重写toString方法
return "Student [naem=" + name + ", age=" + age + "]";
}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
import com.wsq.bean.Student;
public class Demo3_Collection {
public static void main(String[] args) {
demo1();
demo2();
}
private static void demo2() { //往集合中存储自定义对象,自定义对象也就是:我们自己定义一个类,然后创建对象
Collection c = new ArrayList();
c.add(new Student("张三",23)); //object obj = new student("张三",23); 父类引用指向子类对象
c.add(new Student("李四",24)); //向集合里面添加Studen类对象
c.add(new Student("王五",25)); //集合里面添加的都是Object类对象
c.add(new Student("赵六",26));
//这里若如果直接打印c,就相当于调用c的toString方法,把结果给显示一下结果而已
Object [] arr = c.toArray(); //将集合转换成数组,全部转换为Object数组,调用c.toArray()这个方法;返回的对象数组为Object类型,所以应该用Object数组去接收
for (int i = 0; i < arr.length; i++) { //对该数组进行遍历
//System.out.println(arr[i]); //输出每一个自定义对象
//打印arr这个数组,就相当于调用toString方法,可以很直接的去显示属性值,只是为了显示一下
//当把Student类对象添加进来的时候,做一个类型提升,提升为Object类,然后集合转换为数组也是Object类,现在想要拿到每个Student类里面的getName和getAge,就需要向下转型
Student s = (Student)arr[i]; //向下转型
//因为Object [] arr = c.toArray();这里的c.toArray()集合是用Object类型的数组接收的,new Student("张三",23),在添加的时候,Student对象以及提升为Object
//多态的弊端:不能使用子类特有的属性和行为,Object类里面没有getName和getAge这样的方法的,但是我们自定义的Student类里面有,所以要向下转型
System.out.println(s.getName() + "..." + s.getAge());//通过getName和getAge来获取姓名和年龄
//getName和getAge方法是可以把值给获取过来,可以打印也可以不打印,可以获取到进行打印,也可以拿到进行赋值,或者进行存储或者进行别的操作,相对toString来说更灵活
}
}
public static void demo1(){ //往集合里存储字符串,然后把集合转成数组,可以实现集合的遍历
Collection c = new ArrayList(); //创建一个集合对象c,父类引用指向子类对象
c.add("a"); //向集合里面添加元素
c.add("b");
c.add("c");
c.add("d");
Object[] arr = c.toArray(); //将集合转换成数组,调用c.toArray()这个方法;返回的对象数组为Object类型,所以应该用Object数组去接收
for(int i= 0;i<arr.length;i++){ //上一步,已将集合转化成了数组,直接for循环打印即可
System.out.println(arr[i]); //打印每一个元素
}
}
}