ArrayList<String> newArray = new ArrayList<String>();
newArray = urlList.getUrl();
for( int i = 0 ; i < newArray.size();i++)
{
System.out.println(newArray.get(i));
}
newArray.toArray(mStrings );// is this correct
mStrings = newArray.toArray();// or this to convert ArrayList ot String array here
for( int i = 0 ; i < mStrings.length;i++)
{
System.out.println(mStrings[i]);
}
EDIT:当我尝试如下操作时,我得到null指针异常:
try
{
newArray.toArray(mStrings );
for(int i = 0 ; i < mStrings.length; i++)
{
System.out.println(mStrings[i]);
}
} catch( NullPointerException e )
{
System.out.println(e);
}
发布于 2011-03-05 15:13:05
这取决于你想做什么。两者都是正确的
toArray()以正确的顺序(从第一个元素到最后一个元素)返回一个包含该列表中所有元素的数组。
参考here
toArray(T[] a)返回一个包含该列表中所有元素的数组(从第一个元素到最后一个元素);返回的数组的运行时类型是指定数组的运行时类型。如果列表适合指定的数组,则在其中返回该列表。否则,将使用指定数组的运行时类型和此列表的大小分配一个新数组。
参考here
在前者中,您希望获得一个数组。在后一种情况下,你有一个数组,你只是想填充它。
在您的例子中,first form是首选,因为您只想获得一个数组,而不需要考虑大小或细节。
基本上这是在第二种情况下发生的事情:
数组列表的大小为measures.
(B)否则,将该列表转储到指定的数组中。
这样做的唯一好处是可以避免强制转换。这两种形式是相同的。如果您使用对象数组。即
myList.toArray() <==> toArray(new Object[0])
现在,如果你传递一个未初始化的数组,你将得到一个NullPointerException。最好的方法是:
String[] y = x.toArray(new String[0]);
请阅读文档
发布于 2011-03-05 15:23:09
通常我会写
String[] array = collection.toArray(new String[collection.size()]);
因为这样的话
在调用Collection.toArray(T[])
.之前,我不需要声明数组。
发布于 2011-03-05 15:14:36
第一种方法更好,因为它允许您传入一个类型化数组,然后在方法中填充该数组。
第二个选项返回一个Object[] -所以你必须转换它才能使用字符串方法。
https://stackoverflow.com/questions/5202309
复制相似问题