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

时间:2017-03-02 14:16:31

标签: java arrays list java-7

我们可以通过以下三种方式(在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);

哪一种最好,哪种情况最好?这三者之间有什么区别吗?

1 个答案:

答案 0 :(得分:4)

主要区别如下:

Arrays.asList()创建一个不可调整大小的List,此处仅用作访问new ArrayList(List)构造函数的中间件。如果您不需要可变列表,则仅使用Arrays.asList()是最简单/最干净的解决方案。

ArrayList.addAll()将是向现有列表添加内容的“标准”方式(可能已包含与示例代码不同的数据),但是......

Collections.addAll()是一种便捷方法:

  

这种方便方法的行为与之相同   c.addAll(Arrays.asList(elements)),但此方法可能会运行   在大多数实现中显着更快。

三者之间的任何“好处”完全取决于你的情况和 实际上,它主要是代码风格问题,而不是与性能相关的问题。