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

标签 java arrays list java-7

我们可以通过以下 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() 是最简单/最干净的解决方案。

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

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.

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

关于java - 从数组创建列表 - 3 种方法哪一种更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42557829/

相关文章:

java - Vertica VerticaDayTimeInterval 精度存储错误

javascript - 将数据推送到数组然后迭代?

Python 在 for 循环之外获取修改后的列表

java - 屏幕尺寸 18.5x9 的布局

java - Class.forName() 抛出 ClassNotFoundException

java - 从另一个类添加到 ArrayList

c - 如何将 .txt 文件中的值读取到 C 程序中

带有 async/await 的 JavaScript 数组过滤器

python - 检查列表中包含字符串的字符串的最简单方法?

c++ - 段错误 vector < vector <列表<对象*>>> push_back