Java中的数组转ArrayList
Array(数组) 是一组可以是原始数据类型或对象的元素的集合。Java中的数组是静态的。 ArrayList(数组列表) 则只能将元素存储为对象。Java中的ArrayList不同于数组,其是动态的。ArrayList是java.util包中实现java.util.List接口的集合类。
数组可以使用以下方法转换为ArrayList:
- 使用ArrayList.add()方法手动将数组元素添加到ArrayList中 :这种方法涉及创建一个新的ArrayList,并使用add()方法将给定数组的所有元素添加到新创建的ArrayList中。
语法: public void add(int index, E element)
参数: 此函数接受2个必需参数:
- index - 要插入指定元素的索引。
- element - 要插入的元素。
返回值: 该方法不返回任何值
异常: 如果索引超出范围,则该方法引发indexOutOfBoundsException。
例:
// Java程序说明转换
//从数组转换为ArrayList
import java.util.Arrays;
import java.util.ArrayList;
class ArrayToArrayList {
public static void func1(int arr[])
{
ArrayList<Integer> array_list =
new ArrayList<Integer>();
//使用add()方法在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。
语法: public static List asList(T[] a)
参数: 该方法接受一个强制参数T []a,其中a是将支持列表的数组,T是数组的类型。
返回值: 该方法返回指定数组的列表视图。
例:
// Java程序说明转换
//从数组转换为ArrayList
import java.util.Arrays;
import java.util.ArrayList;
class ArrayToArrayList {
public static void func2(Integer arr[])
{
//使用Arrays.asList()方法
ArrayList<Integer> array_list =
new ArrayList<Integer>(Arrays.asList(arr));
System.out.print(array_list);
}
public static void main(String[] args)
{
//使用Integer对象而不是原始数值进行转换到列表
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中。
语法: public static boolean addAll(Collection c, T.. a)
参数: 该方法接受2个强制参数:
- c - 这是要插入元素的集合。
- a此方法需要2个参数,一个是包含要插入值的ArrayList,另一个是用于使用的数组的值。然后将数组的值复制到ArrayList中。
例:
// Java程序说明转换
//从数组转换为ArrayList
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
class ArrayToArrayList {
public static void func3(Integer arr[])
{
ArrayList<Integer> array_list =
new ArrayList<Integer>();
//通过将数组值添加到ArrayList中来将值转换为ArrayList
Collections.addAll(array_list, arr);
System.out.print(array_list);
}
public static void main(String[] args)
{
Integer array[] = { new Integer(1),
new Integer(2),
new Integer(3),
new Integer(4),
new Integer(5) };
func3(array);
}
}
输出:
[1, 2, 3, 4, 5]
- **public boolean addAll(Collection <? extends T> c) ** – 将类型为T的数组插入到c中
返回值: 如果调用以后集合发生了变化,则返回「真」,否则返回「假」。
异常: 此方法会抛出以下异常
- UnsupportedOperationException 。
- 如果指定的集合为null,则会抛出 NullPointerException 。
- 如果数组中的某些值的某个方面阻止它被添加到c中,则会抛出 IllegalArgumentException 。
例子:
// Java程序,演示将数组转换为ArrayList
import java.util.Collections;
import java.util.ArrayList;
class ArrayToArrayList {
public static void func3(String arr[])
{
ArrayList<String> array_list = new ArrayList<String>();
// 使用Collections.addAll()方法
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中。
语法: public static IntStream stream(T[] a)
参数: 该方法接受一个必需的参数「a」,它是要转换为T类型流的数组。
返回值: 该方法返回一个指定类型数组的流(这里是Int)。
解释:
使用 Arrays.stream().collect() 方法,它使用 java.util.stream.Collectors 类将流转换为列表,并使用 toList() 方法。
注意: 该方法需要 Java 8 或更高版本。
例子:
// Java程序,演示将数组转换为ArrayList
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
class ArrayToArrayList {
public static void func4(String arr[])
{
// 使用Arrays.stream.collect()方法。
ArrayList<String> array_list = (ArrayList<String>)
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创建,
语法: static {T} List{T} of(a)
参数: 该方法接受一个必需的参数「a」,它是要转换并创建的数组,T表示列表的元素类型(可以省略)。
返回值: 该方法返回一个包含指定元素的列表。
异常: **如果数组为空,则该方法会抛出 **NullPointerException(空指针异常)
注意: **该方法需要使用 **Java 9或更高版本。
例子:
// Java程序示例,将一个数组转换成一个ArrayList
// 这个示例展示了如何使用 List.of() 方法。
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[])
{
// 使用 List.of() 方法。
ArrayList<String> array_list = new ArrayList<String>(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/util/stream/package-summary.html
- https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html
- https://docs.oracle.com/javase/9/docs/api/java/util/List.html
极客教程