Java学习笔记86. Collection接口中toArray( )方法的使用

Collection接口有15种方法,这里先总结一个toArray( )方法。

toArray( ) 方法分为有参和无参两种,它们的返回值都是一个包含集合对象的所有元素的数组。

无参方法的机制:

将集合对象的元素全部转换为数组元素,并返回这个数组

有参方法的机制:

如果有带参数,那么参数也必须是一个数组;

如果参数数组的长度与集合元素的长度相等,则将集合元素存入参数数组,并返回同样的数组;

如果参数数组的长度小于集合的元素数量,则忽略此参数;并返回集合转换后的数组

如果参数数组的长度大于集合的元素数量,则在保存数组后,多余的数组元素的值都为NULL,并返回集合转换后的数组


下面写2个程序,辨析这两种情况的差别:

先看无参的:

//引入类包
import java.util.List;
import java.util.ArrayList;

public class testCollection{
    public static void main(String[] args){
//声明并创建ArrayList对象list5,实现List接口
        List<String> list5 = new ArrayList<String>();
//依次添加元素
        list5.add("a");
        list5.add("b");
        list5.add("c");
        list5.add("d");
        list5.add("e");
//使用toArray的无参方法,将列表的元素组成的数组赋值给Object数组oo
        Object[] oo = list5.toArray();
//使用2种循环,遍历数组oo
        for(int i=0;i<oo.length;i++)
            System.out.print(oo[i]+" ");

        for(Object o:oo)
            System.out.print(o+" ");
         System.out.println();
    }
}

编译输出,结果如下:

再看一下有参方法

//引入相关的包
import java.util.List;
import java.util.ArrayList;

public class testCollection{
    public static void main(String[] args){
//创建ArrayList实例list5,实现List接口
        List<String> list5 = new ArrayList<String>();
//添加元素
        list5.add("a");
        list5.add("b");
        list5.add("c");
        list5.add("d");
        list5.add("e");
//分别测试数组长度不足,正好,和多一个的情况下,toArray有参方法的运行机制
        Object[] test1 = new Object[list5.size()-1];
        Object[] test2 = new Object[list5.size()];
        Object[] test3 = new Object[list5.size()+1];
//数组长度少1个的情况
        Object[] oo1 = list5.toArray(test1);
        for(Object o:oo1)
            System.out.print(o+" ");
        System.out.println();
        for(Object t:test1)
            System.out.print(t+" ");
        System.out.println();
//数组长度正好的情况
        Object[] oo2 = list5.toArray(test2);
        for(Object o:oo2)
            System.out.print(o+" ");
        System.out.println();
        for(Object t:test2)
            System.out.print(t+" ");
        System.out.println();
//数组长度多1个的情况
        Object[] oo3 = list5.toArray(test3);
        for(Object o:oo3)
            System.out.print(o+" ");
        System.out.println();
        for(Object t:test3)
            System.out.print(t+" ");
        System.out.println();
    }
}

编译运行


可见,如果数组长度少,参数就没有意义;如果数组长度正好,参数会被赋值;如果数组长度多了,那么多余的元素就是NULL

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值