ArrayList到java中的字符串数组

pra*_*eep 16 java android

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]);
}
Run Code Online (Sandbox Code Playgroud)

编辑:当我尝试如下,我得到空指针异常:

try
{
    newArray.toArray(mStrings );
    for(int i = 0 ; i < mStrings.length; i++)
    {
        System.out.println(mStrings[i]);
    }
} catch( NullPointerException e )
{
    System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)

rli*_*bby 40

通常我写

String[] array = collection.toArray(new String[collection.size()]);
Run Code Online (Sandbox Code Playgroud)

因为这样

  1. 我得到了一个我想要的类型的数组.
  2. 我没有必要在调用之前声明数组Collection.toArray(T[]).

  • 第2点与`String [] array = new String [collection.size()]; array = collection.toArray(array);`.其他答案建议`new String [0]`,这没关系,但会创建一个额外的临时对象. (5认同)

Nis*_*ant 30

取决于你想做什么.两者都是正确的

toArray() 以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组.

请参考这里

toArray(T [] a) 以适当的顺序(从第一个元素到最后一个元素)返回包含此列表中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型.如果列表适合指定的数组,则返回其中.否则,将使用指定数组的运行时类型和此列表的大小分配新数组.

请参考这里

在前者,你想得到一个数组.在后者你有一个数组,你只是想填补它.

在您的情况下,首选表单是首选,因为您只想获得一个数组而不会打扰大小或细节.


基本上这是第二种情况:

  1. 列表的大小是度量.
  2. (a)如果列表大小小于提供的数组的大小,则创建作为参数提供的类型的新数组.

    (b)否则,列表将被转储到指定的数组中.

这样做的唯一好处就是你避免施法.两种形式是相同的.如果使用Object数组.即

     myList.toArray() <==> toArray(new Object[0])
Run Code Online (Sandbox Code Playgroud)

现在,如果你传递一个未初始化的数组,你将得到一个NullPointerException.最好的方法是:

 String[] y = x.toArray(new String[0]);
Run Code Online (Sandbox Code Playgroud)

请阅读该文件