Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用toArray将集合转储到阵列_Java_Arrays_Collections - Fatal编程技术网

Java 使用toArray将集合转储到阵列

Java 使用toArray将集合转储到阵列,java,arrays,collections,Java,Arrays,Collections,我正在阅读有关java集合的内容,其中包括: 假设c是只包含字符串的已知类型(可能是因为c属于Collection)。以下代码段将c的内容转储到新分配的字符串数组中,该字符串的长度与c中的元素数相同 ps.c是一个集合 我的问题是,为什么我们需要将新字符串[0]传递给c.toArray?传递新字符串[0]有什么作用?如果我们删除它有什么区别?最好使用公共T[]数组(T[]a),因为您将获得T[]类型,而不是原始对象类型。这是因为Java无法在运行时创建特定类型的数组,而不将类型直接传递给方法,实

我正在阅读有关java集合的内容,其中包括:

假设
c
是只包含字符串的已知类型(可能是因为
c
属于
Collection
)。以下代码段将
c
的内容转储到新分配的
字符串数组中,该字符串的长度与
c
中的元素数相同

ps.
c
是一个集合

我的问题是,为什么我们需要将
新字符串[0]
传递给
c.toArray
?传递
新字符串[0]
有什么作用?如果我们删除它有什么区别?

最好使用
公共T[]数组(T[]a)
,因为您将获得
T[]
类型,而不是原始对象类型。这是因为Java无法在运行时创建特定类型的数组,而不将类型直接传递给方法,实际上
a.getClass()
用于获取
Class
引用(因为类型擦除)

此外,传递一个
新的T[0]
将导致数组的双重分配。您可以直接传递大小正确的数组,以避免任何开销:

String[] a = c.toArray(new String[c.size()]);
可能的副本。另请参见:您只需传入c.size(),它正在检查答案中提到的源代码。
String[] a = c.toArray(new String[c.size()]);