将数组复制到列表中

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<E>是一个接口,因此不能被实例化:您可以创建一个ArrayList<E>LinkedList<E>来代替。 - Giulio Piancastelli
谢谢,那就是我开始使用的,但我在这里发布问题之前错误地将其更改为列表。 - phcoding
你仍然需要添加类型参数,例如 List<String> - Giulio Piancastelli
3个回答

9

有一个一行代码,使用 Arrays.asList(T...a) 将数组转换为列表,并将其作为参数传递到 ArrayList 的重载构造函数中,该构造函数接受一个 Collection 类型的参数。

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

1
List<E>是一个接口,因此您无法实例化它。也许您的意思是 new ArrayList<String>() - Giulio Piancastelli
@GiulioPiancastelli 哎呀。已经解决了 :) - PermGenError
1
新建仅在您想修改列表时才有用,否则Cratylus的答案更好。 - Aubin

6
如果您需要以列表格式呈现数组,但实际上不需要在结构上进行修改,可以这样做:List<String> list = Arrays.asList(array);。否则,@PremGenError的答案是最好的选择。

2
+1 是为了解释 Arrays.asList() 和创建新列表之间的区别。 - Giulio Piancastelli

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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接