从数组创建列表 - 3 种方式哪一种更好

Creating a List from an Array - 3 ways Which one is better

我们可以通过以下 3 种方式从数组创建列表(在 Java 7),

1. 使用 Arrays.asList()
2. 使用 ArrayList.addAll()
3. 使用 Collections.addAll()

// Using Arrays.asList()

String[] stringArray = {"foo", "bar", "baz"};
List<String> stringList = new ArrayList<>(Arrays.asList(stringArray));

// Using ArrayList.addAll()

String[] stringArray = {"foo", "bar", "baz"};
ArrayList<String> list = new ArrayList<>();
list.addAll(Arrays.asList(stringArray));

// Using Collections.addAll()

String[] stringArray = {"foo", "bar", "baz"};
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, stringArray);

哪个最好,适用于什么情况?这三者有什么区别吗?

主要区别如下:

Arrays.asList() 创建一个不可调整大小的 List,这里仅用作访问 new ArrayList(List) 构造函数的中间体。如果您不需要可变列表,仅使用 Arrays.asList() 是 simplest/cleanest 解决方案。

ArrayList.addAll() 将是 "standard" 将内容添加到现有列表的方式(可能已经包含与示例代码不同的数据),但是...

Collections.addAll() 是一个方便的方法:

The behavior of this convenience method is identical to that of c.addAll(Arrays.asList(elements)), but this method is likely to run significantly faster under most implementations.

三者之间的任何 "betterness" 完全取决于您的情况和 实际上,这主要是代码风格问题,而不是性能问题。