Java——集合转数组并对其进行遍历

 * 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]);             //打印每一个元素
        }

    }

}

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/81286567