collection.toArray(new String[0])中new String[0]的作用

collection.toArray(new String[0])中new String[0]的作用collection.toArray(newString[0])中newString[0]的作用转载2016年02月19日14:35:163372newstring[0]的作用比如:String[]result=set.toArray(newString[0]);Collection的公有方法中,toArray()是比较重要的一个。但是使用无参数的toArr…

大家好,又见面了,我是你们的朋友全栈君。

collection.toArray(new String[0])中new String[0]的作用
转载 2016年02月19日 14:35:16 3372
new string[0]的作用

比如:String[] result = set.toArray(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]);

如果指定的数组能容纳该 collection,则返回包含此 collection 元素的数组。否则,将根据指定数组的运行时类型和此 collection 的大小分配一个新数组。这里给的参数的数组长度是0,因此就会返回包含此 collection 中所有元素的数组,并且返回数组的类型与指定数组的运行时类型相同。

像 toArray 方法一样,此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许在输出数组的运行时类型上进行精确控制,并且在某些情况下,可以用来节省分配开销。

假定 l 是只包含字符串的一个已知 List。以下代码用来将该列表转储到一个新分配的 String 数组:

 String[] x = (String[]) v.toArray(new String[0]);

注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。

参数:
a – 存储此 collection 元素的数组(如果其足够大);否则,将为此分配一个具有相同运行时类型的新数组。

Collection Interface Array Operations
The toArray methods are provided as a bridge between collections and older APIs that expect arrays on input. The array operations allow the contents of a Collection to be translated into an array. The simple form with no arguments creates a new array of Object. The more complex form allows the caller to provide an array or to choose the runtime type of the output array.

For example, suppose that c is a Collection. The following snippet dumps the contents of c into a newly allocated array of Object whose length is identical to the number of elements in c.

Object[] a = c.toArray();
Suppose that c is known to contain only strings (perhaps because c is of type Collection). The following snippet dumps the contents of c into a newly allocated array of String whose length is identical to the number of elements in c.

String[] a = c.toArray(new String[0]);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146664.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • centos7和8区别_centos7进不去图形界面

    centos7和8区别_centos7进不去图形界面目前国内各大云服务器的默认centos系统版本还是7,vultr,centos只有8了官网,下载,默认也是8,作为本地主机玩的服务器,还是试一下centos8国外下载之前版本,下载链接:官网默

  • 遗传算法python(含例程代码与详解)「建议收藏」

    遗传算法python(含例程代码与详解)「建议收藏」遗传算法1.算法简介2.算法流程3.算法示例4.算法实现5.算法应用

  • CSDN 赚积分&C币方法[通俗易懂]

    CSDN 赚积分&C币方法[通俗易懂]于2019-03-20补充下载积分规则(2019-03-20)项目名称 获得细则 积分数量 普通资源被下载 100分封顶,下载自己资源无积分 资源分*下载量 获得C币规则(2019-03-20)1.撰写博文获得C币现在去发博文行为 获得数量 说明 博客专家每月原创文章数>=4 10 月度奖励,于下月月初结算…

  • vs2017密钥激活_vs2017激活成功教程版安装教程

    vs2017密钥激活_vs2017激活成功教程版安装教程一般情况下要先安装IIS再装.NetFramework,这样可以保证.net的部分功能可以绑定到IIS,若安装顺序不对,可以后注册IIS,步骤如下:(1)在开始菜单中找到VS安装目录下的命令行提示符,以管理员身份运行。(2)输入IIS注册命令:aspnet_regiis-i

  • Linux磁盘管理(命令行)

    Linux磁盘管理(命令行)Linuxfdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。

  • c语言createthread函数,C++中CreateThread函数创建线程的用法和实例

    c语言createthread函数,C++中CreateThread函数创建线程的用法和实例CreateThread是一种微软在WindowsAPI中提供了建立新的线程的函数,该函数在主线程的基础上创建一个新线程。线程终止运行后,线程对象仍然在系统中,必须通过CloseHandle函数来关闭该线程对象。需要调用到CRT库时,不要用CreateThread创建线程、并用CloseHandle来关闭这个线程,而应该用_beginthread来创建线程,_endthread来销毁线程。因为…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号