首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >toArray(T[] a)与toArray()的差异

toArray(T[] a)与toArray()的差异
EN

Stack Overflow用户
提问于 2015-02-08 10:04:14
回答 2查看 9.5K关注 0票数 12

我一直在学习如何用java编程,对于LinkedListtoArray(T[] a)方法和toArray()方法的区别,我还没有得到任何明确的解释。第二个方法只是将LinkedList对象中的所有元素作为数组返回,对吗?但是第一个呢?

编辑:

我是说,我读过甲骨文的文件,上面写着:

返回包含此列表中所有元素的数组(从第一个元素到最后一个元素);返回数组的运行时类型是指定数组的运行时类型。如果列表适合指定的数组,则在其中返回。否则,将使用指定数组的运行时类型和此列表的大小分配一个新数组。如果列表适合于指定的数组,并留有空间(也就是说,数组中的元素比列表多),则在列表结束后的数组中的元素设置为null。(只有在调用方知道列表不包含任何空元素时,这才有助于确定列表的长度。)。 与toArray()方法一样,该方法充当基于数组和基于集合的API之间的桥梁。此外,该方法允许对输出数组的运行时类型进行精确控制,并且在某些情况下可用于节省分配成本。

我不明白用黑体字显示的句子的意思。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-08 10:07:27

假设您有一个List<String>,并且希望将它转换为String[]。让我们看看两种方法的工作原理:

代码语言:javascript
复制
List<String> source = new LinkedList<String>();
// Fill in some data

Object[] array1 = source.toArray();
String[] array2 = source.toArray(new String[source.size()]);

看到区别了吗?第一个简单地创建一个Object[],因为它不知道类型参数<T>的类型,而第二个只填充您传递的String[] (这正是您想要的)。你几乎总是需要使用第二种方法。

票数 27
EN

Stack Overflow用户

发布于 2015-02-08 10:06:22

有两个不同之处:

  1. 第一个返回T[],第二个返回Object[]
  2. 第一个数组接受一个数组作为参数,如果这个数组足够大,它将使用这个数组来存储Collection的元素,而不是创建一个新的元素。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28392705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档