2013-03-07 40 views
3

嗨,我想知道是否有复制数组列表比下面的一个联机方式:复制数组列表

String array[] = new String[]{"1", "2", "3", "4" } ; 

List list = new ArrayList(); 

for (int i=0; i< array.length; i++){ 
    list.add(array[i]); 
} 

编辑:感谢知识性的回答,非常有帮助: )

+1

请使用通用List的版本。另外,'List '是一个接口,所以它不能实例化:您可以创建一个'ArrayList '或者'LinkedList '。 – 2013-03-07 21:53:35

+0

谢谢,这就是我不得不从头开始,但是我在错误地发布这个问题之前将其更改为列表。 – phcoding 2013-03-07 22:00:08

+0

您仍然需要添加类型参数,例如'列表'。 – 2013-03-07 22:27:42

回答

9

是的,有一个单线程,使用Arrays.asList(T...a)将数组转换为列表并将其作为参数传递给ArrayList重载的构造函数,该构造函数需要一个Collection。

List<String> list = new ArrayList<String>(Arrays.asList(array)) 
+1

'List '是一个接口,所以你不能实例化它。也许你的意思是'新的ArrayList ()'? – 2013-03-07 21:50:52

+0

@GiulioPiancastelli oops。排序:) :) – PermGenError 2013-03-07 21:51:54

+1

只有当你想修改列表时,新的才有用,否则Cratylus的答案更好 – Aubin 2013-03-07 21:54:32

6

如果您需要在列表格式数组,但实际上并不需要在结构修改,你可以做数组:List<String> list = Arrays.asList(array);
否则,@ PremGenError的答案是要去的。

+2

+1解释'Arrays.asList()并创建一个新的清单。 – 2013-03-07 21:55:02

2

最简单的方法是:

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

然而,这将返回指定数组支持的固定大小的列表。 这意味着尝试修改列表(如list.add("10")) 将在运行时导致java.lang.UnsupportedOperationException- 所以要小心。

的可修改列表可以基于固定大小的列表上构建:

List<String> modifiableList = new ArrayList<String>(fixedList); 

这两个步骤可以合并成一个单一的代码行,像这样:

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