从数组创建列表 - 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" 完全取决于您的情况和
实际上,这主要是代码风格问题,而不是性能问题。
我们可以通过以下 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" 完全取决于您的情况和 实际上,这主要是代码风格问题,而不是性能问题。