Java中的数组到 ArrayList 的转换
数组是元素的集合,可以是原始数据类型或对象。 Java中的数组本质上是静态的。另一方面, ArrayList只能将元素存储为对象。 Java中的 ArrayList 与数组不同,本质上是动态的。 ArrayList 是存在于Java.util 包中的集合类,它实现了Java.util.List 接口。
可以使用以下方法将数组转换为 ArrayList:
- 使用 ArrayList.add() 方法在 ArrayList 中手动添加数组元素:此方法涉及创建一个新的 ArrayList 并使用 add() 方法将给定数组的所有元素添加到新创建的 ArrayList 中。
Syntax: public void add(int index, E element)
参数:此函数接受 2 个强制参数:
- index -- 要插入指定元素的索引。
- element -- 要插入的元素。
返回:该方法不返回任何值
异常:如果索引超出范围,该方法将抛出IndexOutOfBoundsException 。
例子:
// Java program to illustrate conversion // of an array to an ArrayList import java.util.Arrays; import java.util.ArrayList; class ArrayToArrayList { public static void func1(int arr[]) { ArrayList
array_list = new ArrayList (); // Using add() method to add elements in array_list for (int i = 0; i < arr.length; i++) array_list.add(new Integer(arr[i])); System.out.print(array_list); } public static void main(String[] args) { int array[] = { 1, 2, 3, 4, 5 }; func1(array); } } 输出:[1, 2, 3, 4, 5]
- 使用Java.utils.Arrays 类的 Arrays.asList() 方法:该方法将数组转换为列表,然后将列表作为参数传递,以使用列表值初始化一个新的 ArrayList。
Syntax: public static List asList(T[] a)
参数:该方法接受一个强制参数 T[] a,其中 a 是支持列表的数组,T 是数组的类型。
返回:该方法返回指定数组的列表视图。
例子:
// Java program to illustrate conversion // of an array to an ArrayList import java.util.Arrays; import java.util.ArrayList; class ArrayToArrayList { public static void func2(Integer arr[]) { // Using Arrays.asList() method ArrayList
array_list = new ArrayList (Arrays.asList(arr)); System.out.print(array_list); } public static void main(String[] args) { // Integer objects are used instead // of primitives for conversion to list Integer array[] = { new Integer(1), new Integer(2), new Integer(3), new Integer(4), new Integer(5) }; func2(array); } } 输出:[1, 2, 3, 4, 5]
- 使用Java.utils.Collections 类的 Collections.addAll() 方法:该方法将要插入数组值的 ArrayList 作为第一个参数;以及其值将用作第二个参数的 Array。然后它将 Array 的值复制到 ArrayList 中。
Syntax: public static boolean addAll(Collection c, T.. a)
参数:该方法接受 2 个强制参数:
- c – 这是要插入元素的集合。
- a – 要插入到 c 中的数组,类型为 T
返回:如果集合因调用而改变,则该方法返回“true”,否则返回“false”。
异常:方法抛出
- 不支持的操作异常。
- 如果指定的集合为 null,则NullPointerException 。
- IllegalArgumentException如果数组中某个值的某些方面阻止它被添加到 c。
例子:
// Java program to illustrate conversion // of an array to an ArrayList import java.util.Collections; import java.util.ArrayList; class ArrayToArrayList { public static void func3(String arr[]) { ArrayList
array_list = new ArrayList (); // Using Collections.addAll() method Collections.addAll(array_list, arr); System.out.print(array_list); } public static void main(String[] args) { String array[] = { "ABC", "DEF", "GHI", "JKL" }; func3(array); } } 输出:[ABC, DEF, GHI, JKL]
- 使用Java.utils.Arrays 类的 Arrays.stream() 方法:此方法创建数组值的顺序流。然后在 collect() 方法和流的帮助下,将值复制到 ArrayList 中。
Syntax: public static IntStream stream(T[] a)
参数:该方法接受一个强制参数“a”,它是要转换为 T 类型流的数组
Returns:该方法返回一个数组的指定类型的流(这里是Int)。解释:
使用Arrays.stream().collect()方法,该方法使用Java.util.stream.Collectors类在toList()方法的帮助下将流转换为列表。注意:此方法需要Java 8或更高版本。
例子:
// Java program to illustrate conversion // of an array to an ArrayList import java.util.Arrays; import java.util.ArrayList; import java.util.stream.Collectors; class ArrayToArrayList { public static void func4(String arr[]) { // Using Arrays.stream.collect() method. ArrayList
array_list = (ArrayList ) Arrays.stream(arr) .collect(Collectors.toList()); System.out.print(array_list); } public static void main(String[] args) { String array[] = { "ABC", "DEF", "GHI", "JKL" }; func4(array); } } 输出:[ABC, DEF, GHI, JKL]
- 使用Java.utils.List 接口的 List.of(Elements) 方法:该方法将数组作为参数,然后创建数组值的不可变列表。然后将此不可变列表作为参数传递以创建新的 ArrayList,
Syntax: static {T} List{T} of(a)
参数:该方法接受一个强制参数“a”,它是要转换的数组,T 表示列表的元素类型(可以省略)。
返回:该方法返回一个包含指定元素的列表。
异常:如果数组为空,该方法将抛出NullPointerException 。注意:此方法需要Java 9或更高版本。
例子:
// Java program to illustrate conversion // of an array to an ArrayList import java.util.List; import java.util.Arrays; import java.util.ArrayList; import java.util.stream.Collectors; class ArrayToArrayList { public static void func5(String arr[]) { // Using List.of() method. ArrayList
array_list = new ArrayList (List.of(arr)); System.out.print(array_list); } public static void main(String[] args) { String array[] = { "ABC", "DEF", "GHI", "JKL" }; func5(array); } } 输出:[ABC, DEF, GHI, JKL]
参考:
- https://docs.oracle.com/javase/8/docs/api/java Java
- https://docs.oracle.com/javase/8/docs/api/java Java
- https://docs.oracle.com/javase/9/docs/api/ Java/util/List.html