JAVA基础-数组和列表之间的转换

Java中数组和列表之间的转换

List和Array作为Java中经常使用到的集合类型。经常需要互相转换。下面我们将学习如何使用核心 Java 库、Guava 和 Apache Commons Collections 在 Array 和 List 之间进行转换。

List To Array

1. toArray方法

List<String> list = List.of("A", "B", "C");
String[] array = list.toArray(new String[0]);

System.out.println(list);
System.out.println(Arrays.toString(array));

// 输出
// [A, B, C]
// [A, B, C]

注意:我们使用该方法的首选方式是 toArray(new T[0]) 与 toArray(new T[size])。

toArray(new T[0]) 看起来更快、更安全,因此现在应该是默认选择。——Collection.toArray(new T[0]) or Collection.toArray(new T[size]), that’s the question

2. 使用Guava

List<Integer> integers = List.of(1, 2, 3, 4, 5);
int[] ints = Ints.toArray(integers);

System.out.println(integers);
System.out.println(Arrays.toString(ints));

// 输出
// [1, 2, 3, 4, 5]
// [1, 2, 3, 4, 5]

增加了自动拆装箱操作,可以直接转成原始数据类型数组。

Array To List

1. Arrays.asList方法

Integer[] integers1 = {1, 2, 3, 4, 5};
List<Integer> integerList = Arrays.asList(integers1);

System.out.println(integers1.length == integerList.size());

// 输出
// true

注意:Arrays.asList返回由指定数组支持的固定大小列表。所以不能调用add等方法,会报运行时异常:java.lang.UnsupportedOperationException

如果需要一个标准的ArrayList,可以使用下面的方法。

ist<Integer> notFixedList = new ArrayList<>(Arrays.asList(integers1));
notFixedList.add(6);
System.out.println(notFixedList);

// 输出
// [1, 2, 3, 4, 5, 6]

2. 使用Guava

Integer[] integers2 = {1, 2, 3, 4, 5};
List<Integer> integerList2 = Lists.newArrayList(integers2);

System.out.println(Arrays.toString(integers2));
System.out.println(integerList2);

integerList2.add(6);
System.out.println(integerList2);

// 输出
// [1, 2, 3, 4, 5]
// [1, 2, 3, 4, 5]
// [1, 2, 3, 4, 5, 6]

3. 使用Collections

Guava的Lists.newArrayList内部调用的是

ArrayList<E> list = new ArrayList(capacity);
Collections.addAll(list, elements);

所以这也是第三个方法,使用Collections.addAll

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容