2012-10-03 39 views
0

我有一个资源字符串数组,我想放入一个ArrayList,但返回的数据类型是一个字符串数组。字符串[]不能直接转换为ArrayList的W/O收到以下错误:不能从字符串[]转换为ArrayList <String>

无法从字符串[]转换为ArrayList的

如何我转换的String []数据类型为ArrayList的?

编辑

我有一个适配器,其构造函数采用一个ArrayList和资源字符串数组,我想填充它。

回答

6

如果你能凑合着List<String>(而不是具体的ArrayList<String>),你可以使用:

List<String> list = Arrays.asList(stringArray); 

否则,你可以这样做:

ArrayList<String> list = new ArrayList<String>(Arrays.asList(stringArray)); 

然而,后者比其他建议的解决方案效率更低(在时间和对象创建计数中)。它的唯一好处是它可以将代码保存到一行,并且一目了然便于理解。

+0

List和ArrayList不一样。 –

+0

@AndroidAddict - 我意识到这一点。这就是为什么我符合第一个建议。然而,'ArrayList'是'List'的一个子类型,所以这很可能会起作用。 –

+0

@AndroidAddict你理想的解决方案是什么?您将无法直接从阵列转换为数组列表。这里有很多足够有效的答案。 – dennisdrew

2
public ArrayList<String> arrayToArrayList(String[] array){ 
    ArrayList<String> arrayList = new ArrayList<String>(array.length); 
    for(String string : array){ 
     arrayList.add(string); 
    } 

    return arrayList; 
} 
+0

我确定这可行,但其他答案更有效。谢谢你! –

+1

如果您构建初始容量设置为array.length的'arrayList',效率将会提高。 @AndroidAddict - 你为什么认为这不是有效的? –

+0

谢谢,泰德。更新我的代码。 – dennisdrew

2

这个怎么样

import java.util.Collections; 

String[] myStringArray = new String[] {"foo", "bar", "baz"}; 
List myList = new ArrayList(myStringArray.length); 
Collections.addAll(myList, myStringArray); 
+0

好的,这有效,但有没有更高效(简洁)的方式?如果是这样,请编辑您的答案以反映此类情况。我理想地喜欢在一行中执行转换,而不用创建另一个变量。 –

+0

@AndroidAddict没有我知道的,你可以保持这个问题是开放的,看看是否有人提出更好的,但如果你正在寻找简洁,Java可能不是你的语言=)。 –

+0

真的没有别的方法,除了在创建新ArrayList的过程中。没有特别的方法将数组转换为列表。 – dennisdrew

相关问题