收藏。toArray
我们使用上述方法将List<String>
对象转换为等效的String[]
。
List<String> foos = new ArrayList<String>();
// foos.toArray(new String[0]);
// foos.toArray(new String[foos.length]);
使用哪种方法将其转换为数组。
答案 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