Collection.toArray()的正确语法是什么

时间:2011-07-01 06:17:44

标签: java

收藏。toArray 我们使用上述方法将List<String>对象转换为等效的String[]

List<String> foos = new ArrayList<String>();
// foos.toArray(new String[0]);
// foos.toArray(new String[foos.length]);

使用哪种方法将其转换为数组。

3 个答案:

答案 0 :(得分:3)

这一个:

foos.toArray(new String[foos.size()]);

是否使用正确的。如果你给toArray一个太短而不适合列表的数组,toArray将分配一个新数组,而不是将元素存储在你提供的数组中。这意味着Java将分配两个数组而不是一个,并且会以这种方式浪费几个时钟周期。

答案 1 :(得分:2)

如果你看到这两个功能的签名,你会清楚地看到差异。

Object[] toArray();

返回的数组将是“安全的”,因为此集合不会保留对它的引用。 (换句话说,即使此集合由数组支持,此方法也必须分配新数组)。因此调用者可以自由修改返回的数组。

此方法充当基于阵列和基于集合的API之间的桥梁。

<T> T[] toArray(T[] a);

a要存储此集合元素的数组(如果它足够大);否则,为此目的分配一个相同运行时类型的新数组。

答案 2 :(得分:1)

String array[] = foos.toArray(new String[foos.size()]);

请注意,它也可以使用新的String [0],但是如果foos.size()&gt;需要重新分配数组。 0