首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java中字符串数组的ArrayList

java中字符串数组的ArrayList
EN

Stack Overflow用户
提问于 2011-03-05 15:07:54
回答 5查看 53.8K关注 0票数 16
代码语言:javascript
复制
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指针异常:

代码语言:javascript
复制
try
{
    newArray.toArray(mStrings );
    for(int i = 0 ; i < mStrings.length; i++)
    {
        System.out.println(mStrings[i]);
    }
} catch( NullPointerException e )
{
    System.out.println(e);
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-05 15:13:05

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

toArray()以正确的顺序(从第一个元素到最后一个元素)返回一个包含该列表中所有元素的数组。

参考here

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

参考here

在前者中,您希望获得一个数组。在后一种情况下,你有一个数组,你只是想填充它。

在您的例子中,first form是首选,因为您只想获得一个数组,而不需要考虑大小或细节。

基本上这是在第二种情况下发生的事情:

数组列表的大小为measures.

  • (a)如果列表大小小于所提供的数组的大小,则会创建作为参数提供的类型的新

(B)否则,将该列表转储到指定的数组中。

这样做的唯一好处是可以避免强制转换。这两种形式是相同的。如果您使用对象数组。即

代码语言:javascript
复制
     myList.toArray() <==> toArray(new Object[0])

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

代码语言:javascript
复制
 String[] y = x.toArray(new String[0]);

请阅读文档

票数 32
EN

Stack Overflow用户

发布于 2011-03-05 15:23:09

通常我会写

代码语言:javascript
复制
String[] array = collection.toArray(new String[collection.size()]);

因为这样的话

在调用Collection.toArray(T[]).之前,我不需要声明数组。

  1. 我得到了一个我想要的类型的数组。
票数 42
EN

Stack Overflow用户

发布于 2011-03-05 15:14:36

第一种方法更好,因为它允许您传入一个类型化数组,然后在方法中填充该数组。

第二个选项返回一个Object[] -所以你必须转换它才能使用字符串方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5202309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档