Java 如何在List和Array之间进行转换
List接口是一个集合,它存储一系列元素。ArrayList是List接口的最常见的实现。列表允许用户精确控制元素在列表中的插入位置。这些元素可以通过索引进行访问和搜索。ArrayList是List接口最常见的实现。
Array是一种数据结构,它存储固定大小的、相同类型的元素的顺序集合。数组用于存储数据的集合,但更常见的是将数组视为相同类型变量的集合。
List接口提供了使用toArray()方法将列表转换为数组的方法。toArray()方法的其中一个参数接受另一个对象数组,用于将列表转换为特定类型的数组。否则,我们可以使用没有参数的toArray()方法来获取一个Object数组。本文中,我们将使用完整的示例演示如何使用toArray()方法从列表中获取数组。
1. 使用不带参数的toArray()方法
Object[] toArray()
注意
- 以正确顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
-
返回的数组将是“安全”的,即此列表不会保留对它的引用。(换句话说,即使此列表由数组支持,此方法也必须分配一个新的数组)。因此,调用者可以自由地修改返回的数组。
-
此方法作为基于数组和基于集合的API之间的桥梁。
返回值
一个包含此列表中所有元素的数组,按照正确的顺序。
2. 使用toArray()与数组
<T> T[] toArray(T[] a)
注意
- 返回一个按正确顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组。
-
返回的数组将是“安全”的,因为此列表不会保留对它的引用。
-
即使此列表由一个数组支持,此方法也必须分配一个新数组)。
-
因此,调用者可以自由修改返回的数组。
-
此方法充当数组和集合API之间的桥梁。
类型参数
- T - 数组的运行时类型。
参数
- a - 此列表中的元素要存储到的数组,如果它足够大;否则,将为此目的分配一个相同运行时类型的新数组。
返回值
包含此列表元素的数组。
异常
- ArrayStoreException - 如果指定数组的运行时类型不是此列表中每个元素的超类型。
-
NullPointerException - 如果指定的数组为null。
Arrays类提供了asList()方法来获取包含数组所有元素的列表。
public static <T> List<T> asList(T... a)
类型参数
- T - 元素的运行时类型。
参数
- a - 作为列表支持的数组。
返回值
指定数组的列表视图。
示例1
以下是使用toArray()和Arrays.asList()方法的示例:
package com.tutorialspoint;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
String[] array = {"A", "B", "C"};
// array to List conversion
List<String> list = new ArrayList<>(Arrays.asList(array));
System.out.println("List: " + list);
// list to array conversion
Object[] items = list.toArray();
for (Object object : items) {
System.out.print(object + " ");
}
}
}
输出
这将产生以下结果−
List: [A, B, C]
A B C
示例2
以下是另一个示例,展示了使用toArray()方法配合特定类型数组和Arrays.asList()方法的用法 –
package com.tutorialspoint;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
String[] array = {"A", "B", "C"};
// array to List conversion
List<String> list = new ArrayList<>(Arrays.asList(array));
System.out.println("List: " + list);
// list to array conversion
String[] strings = list.toArray(new String[0]);
for (String string : strings) {
System.out.print(string + " ");
}
}
}
输出
这将产生以下结果 −
List: [A, B, C]
A B C