Java实战:数组与List集合的互转及流的使用
在Java编程中,数组和集合(List等)是两种常用的数据结构,它们各有优势:数组性能高效但长度固定,集合功能丰富且大小可变。本文通过一个简单的示例,展示如何将数组转换为List集合,以及如何反向操作,将List集合转换回数组。同时,我们还会利用Java 8引入的Stream API来遍历这些数据结构中的元素。
1. 数组转List集合
步骤解析
假设我们有一个整型数组 intArray,包含一些基本整数值。我们的目标是将其转换为一个ArrayList以便于进行更灵活的操作。
-
第一步:使用 Arrays.stream(intArray) 将数组转换为 IntStream 流。
-
第二步:调用 boxed() 方法,这会将 IntStream 中的每个基本类型整数装箱为 Integer 对象,形成一个 Stream。
-
第三步:通过 toArray(Integer[]::new) 将装箱后的流转换为 Integer 类型的数组,这里使用构造器引用简化代码。
-
第四步:利用 Arrays.asList(…) 将数组转换为 List。
-
最后:通过 new ArrayList<>(…) 创建一个新的 ArrayList,并以转换后的 List 初始化它。
示例代码
int[] intArray = {1, 2, 3, 4, 5};
List<Integer> list = new ArrayList<>(Arrays.asList(Arrays.stream(intArray).boxed().toArray(Integer[]::new)));
遍历List并打印
接着,我们使用 list.stream().forEach(System.out::println); 来遍历并打印List中的每一个元素,展示了Stream API简洁的遍历方式。
2.List集合转数组
实现过程
当需要将处理过的List数据结构转换回数组时,可以利用 toArray(T[] a) 方法。为了确保转换后的数组类型正确,我们传入一个指定类型的空数组作为参数。
示例代码
Integer[] intArray2 = list.toArray(new Integer[0]);
将整型数组intArray2转换成流,并对每个元素调用System.out::println方法进行打印
Arrays.stream(intArray2).forEach(System.out::println);
完整示例代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayToListDemo {
public static void main(String[] args) {
// 1. 数组转List集合
int[] intArray = {1, 2, 3, 4, 5};
List<Integer> list = new ArrayList<>(Arrays.asList(Arrays.stream(intArray).boxed().toArray(Integer[]::new)));
list.stream().forEach(System.out::println);
// 2. 将List集合转成数组
System.out.println("将集合转成数组");
Integer[] intArray2 = list.toArray(new Integer[0]);
Arrays.stream(intArray2).forEach(System.out::println);
}
}
通过上述示例,我们不仅学习了数组与List之间转换的方法,还实践了Java 8 Stream API的便捷用法,这对于提升编码效率和代码可读性大有裨益。