2012-04-19 75 views
80

可能重复:
Assigning an array to an ArrayList in Java我如何转换的String []到ArrayList的<String>

我需要一个String[]转换为ArrayList<String>,我不知道该怎么

File dir = new File(Environment.getExternalStorageDirectory() + "/dir/"); 
String[] filesOrig = dir.list(); 

基本上我想变换filesOrig变成ArrayList

+1

http://stackoverflow.com/questions/3746639/assigning-an-array-to-an-arraylist-in-java – evanwong 2012-04-19 15:01:40

回答

256

你可以做到以下几点:

String [] strings = new String [] {"1", "2" }; 
List<String> stringList = new ArrayList<String>(Arrays.asList(strings)); //new ArrayList is only needed if you absolutely need an ArrayList 
+0

谢谢,这是我使用的一个简单的解决方案 – 2012-04-19 15:08:52

+0

。谢谢:) – ARiF 2016-09-20 20:48:46

+1

我不相信你可以改变这个列表。 stringList.remove(1)肯定不适合我。 – 2016-11-17 04:41:17

4

你也可以遍历所有的阵列,并添加到ArrayList中:

ArrayList<String> files = new ArrayList<String>(filesOrig.length); 
for(String file: filesOrig) { 
    files.add(file); 
} 

或者使用Arrays.asList(T... a)做的发布注释。

+1

'... new ArrayList (filesOrig.length);'防止支持数组的大小必须增长。可能更快。 – zapl 2012-04-19 15:07:37

21

像这样:

String[] words = {"000", "aaa", "bbb", "ccc", "ddd"}; 
List<String> wordList = new ArrayList<String>(Arrays.asList(words)); 

List myList = new ArrayList(); 
String[] words = {"000", "aaa", "bbb", "ccc", "ddd"}; 
Collections.addAll(myList, words); 
+1

谢谢..我不能使用'Arrays.asList',因为我不得不在后面添加元素列表。 'addAll'完美无缺:) – 2014-12-03 06:53:52

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

返回将由阵列被备份的列表时,它的作用就像一个桥,所以这将是固定大小。

+0

这个答案是错误的,甚至不会编译。 – suriv 2017-01-24 12:26:06

+0

@suriv:唯一的问题是'List'而不是'ArrayList',但答案并不错。创建一个数组副本到一个'ArrayList'并不总是必要的,有时你只需要将一个数组看作一个列表。注意,创建一个真正的副本,就像'new ArrayList <>(Arrays.asList(array))'需要列表中每个元素的内存。例如,一个100000'对象'数组需要800kb的RAM,只是指向引用的指针。 – Jack 2017-01-24 13:59:52

+0

为了未来读者的利益,试图添加或删除此列表中的元素将引发异常。 – suriv 2017-01-24 15:10:52

5
List myList = new ArrayList(); 
Collections.addAll(myList, filesOrig); 
2

你可以做这样的事情

MyClass的[] ARR = myList.toArray(新MyClass的[myList.size()]);

相关问题