• List转String数组 collection.toArray(new String[0])中new String[0]的语法解释


    Collection的公有方法中,toArray()是比较重要的一个。
    但是使用无参数的toArray()有一个缺点,就是转换后的数组类型是Object[]。 虽然Object数组也不是不能用,但当你真的想用一个具体类型的数组,比如String[]时,问题就来了。而把Object[]给cast成String[]还是很麻烦的,需要用到这个:
    
    String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);
    
    不管是从哪方面看还是一开始就弄成String[]比较好。
    
    具体怎么办呢?其实用带参数的toArray就好了。官方是这样给出的例子:
    String[] a = c.toArray(new String[0]);
    
    像 toArray 方法一样,此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许在输出数组的运行时类型上进行精确控制,并且在某些情况下,可以用来节省分配开销。
    
    假定 l 是只包含字符串的一个已知 List。以下代码用来将该列表转储到一个新分配的 String 数组: 
    
         String[] x = (String[]) v.toArray(new String[0]);
     注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。 
    
    <T> T[] toArray(T[] a);
    泛型
    会返回你一个list长度的String 类型的数组
    
    需要一个T[] a,new String[0]相当于开辟了一个长度为0的String[],并且指定了泛型。这样函数的调用是将list转换了一个String的数组。
    
    这里的用new String[0]只是为了指定函数的形参数,最终返回的String[]的长度是由你的list存储内容的长度决定了。
    
    new String[0]就是起一个模板的作用,指定了返回数组的类型,0是为了节省空间,因为它只是为了说明返回的类型
    
    ArrayList.toArray()需要返回String [] “串对象数组” 类型,
    要求调用参数也必须是 “串对象数组”,
    new String[] 就是生生一个“串对象数组”,[0]表示元素个数为零。
    
     
    
    只是 一个类型标示,用来告诉toArray方法具体转化成什么类型。
    list.toArray(new String[0]);//转化成String数组
    
    list.toArray(new int[0]);//转化成int数组
    --------------------- 
    作者:defineshan 
    来源:CSDN 
    原文:https://blog.csdn.net/defineshan/article/details/52763637 
    版权声明:本文为博主原创文章,转载请附上博文链接!

     亲测个人例子:

         String [] recipients = {"11311@qq.com"};
            List<String> ccList = new ArrayList(Arrays.asList(recipients));
            // 设置测试阶段抄送人员
            ccList.add("123@qq.com");
            ccList.add("345@qq.com");
            ccList.add("456@qq.com");
            ccList.add("999@qq.com");
            recipients = ccList.toArray(new String[0]);
    
            for (int i = 0; i < recipients.length; i++) {
                System.out.println("args = [" + recipients[i] + "]");
            }
  • 相关阅读:
    云计算openstack核心组件——keystone身份认证服务(5)
    分布式存储ceph——(6)ceph 讲解
    分布式存储ceph——(5)ceph osd故障硬盘更换
    分布式存储ceph——(4)ceph 添加/删除osd
    kvm虚拟化介绍(1)
    kvm虚拟机管理(2)
    云计算openstack共享组件——Memcache 缓存系统(4)
    云计算openstack共享组件——消息队列rabbitmq(3)
    妹子UI-yepnope.js使用详解及示例分享(异步加载数据)
    前端组件整理
  • 原文地址:https://www.cnblogs.com/qcq0703/p/11190770.html
Copyright © 2020-2023  润新知