Java集合框架篇-40-转数组方法练习

       这篇继续学习Collection接口的方法,我们先学习集合转数组的方法。有时候我们拿到的数据类型是集合,我们想转换成数组,然后利用数组相关方法进行操作。下面我们就通过三段代码来练习转换数组的过程,注意第三段代码中的出现的父类不能调用子类的成员方法的问题。

 

1.集合转数组

 

package collection;

import java.util.ArrayList;
import java.util.Collection;

 
public class Demo2_Collection {

   @SuppressWarnings({ "rawtypes", "unchecked" })
   public static void main(String[] args) {

     Collection c = new ArrayList();
     c.add("abc");
     c.add(100);
     c.add(true);
     c.add('y');
     //集合转数组
     Object[] arr = c.toArray();

     for (inti = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
     }
   }
}

输出:

abc
100
true
y

       现在来演示自定义对象在集合中转换数组的过程,还是需要借助前面文章介绍的Student类。

package collection;

import java.util.ArrayList;
import java.util.Collection;

 
public class Demo2_Collection {

   @SuppressWarnings({ "rawtypes", "unchecked" })
   public static void main(String[] args) {

     Collection c = new ArrayList();
     c.add(new Student("张三",23));
     c.add(new Student("李四",24));
     c.add(new Student("王五",25));
     c.add(new Student("刘六",26));
     c.add(new Student("小七",27));
     //集合转数组
     Object[] arr = c.toArray();

     for (inti = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
     }
   }
}

输出:

Student [name=张三, age=23]
Student [name=李四, age=24]
Student [name=王五, age=25]
Student [name=刘六, age=26]
Student [name=小七, age=27]

       上面输出的是name和age,如果我只需要拿到name如何办?我们在Student这个类是有一个getName()方法的,下面我们改变下,看看能不能拿到name。

package collection;

import java.util.ArrayList;
import java.util.Collection;

public class Demo2_Collection {

   @SuppressWarnings({ "rawtypes", "unchecked" })
   publicstaticvoid main(String[] args) {
     Collection c = new ArrayList();
     c.add(new Student("张三",23));
     c.add(new Student("李四",24));
     c.add(new Student("王五",25));
     c.add(new Student("刘六",26));
     c.add(new Student("小七",27));
     //集合转数组
     Object[] arr = c.toArray();

     for (inti = 0; i < arr.length; i++) {
        // 发现下面直接使用getName会报错,为什么
        // 因为我们数组对象是Object类,并不是Student类,而Object类是没有getName方法
        // 如果要使用getName方法,我们需要向下转型
        //System.out.println(arr[i].getName());
        System.out.println(((Student)arr[i]).getName());
     }
   }
}

输出

张三
李四
王五
刘六
小七

注意看我代码中的注释,为什么需要向下转型。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值