为什么没有ArrayList(T [] t)构造函数?

Ale*_*per 16 java collections arraylist

以这种方式通过对象数组初始化列表是很常见的:

Foo[] objs = ...;
ArrayList<Foo> list = new ArrayList<Foo>(Arrays.asList(objs));
Run Code Online (Sandbox Code Playgroud)

我想知道,有没有理由为什么ArrayList的desiner没有包含带数组作为参数的构造函数,所以它可以像这样初始化:

ArrayList<Foo> list = new ArrayList<Foo>(objs);
Run Code Online (Sandbox Code Playgroud)

可能是它违反了一些原则,线程安全或其他什么?

Jon*_*eet 11

我不知道为什么它不在标准库中,但是GuavaListsnewArrayList甚至可以帮助进行类型推断:

ArrayList<Foo> list = Lists.newArrayList(objs);
Run Code Online (Sandbox Code Playgroud)

(Lists.newArrayList如果你经常使用它,你可能想静态导入.)


Gia*_*rdi 7

您可以使用Google Guava Library(AKA Google Collections):

String[] ary = {"a", "b"};
List<String> l = Lists.newArrayList(ary);
Run Code Online (Sandbox Code Playgroud)

http://code.google.com/p/guava-libraries/