介绍
本实验将引导你完成在 Java 中将整数列表(Integer List)转换为整数数组(int Array)的过程。当你在列表中收集数据后需要使用基本类型数组时,这是 Java 编程中的一项常见任务。
我们将探索两种不同的方法来完成此转换:
- 使用 Java 的 Stream API 和
stream.mapToInt()方法 - 使用 Apache Commons Lang 的
ArrayUtils.toPrimitive()方法
在本实验结束时,你将理解这两种方法,并能够在自己的 Java 应用程序中应用它们。
为我们的实验创建一个 Java 类
在第一步中,我们将创建一个 Java 类来演示转换方法。我们将使用 Maven 来管理依赖项和项目结构。
- 首先,确认你位于项目目录中:
cd /home/labex/project
- 在 Maven 源目录中创建一个新的 Java 文件:
cd src/main/java

- 创建
IntegerListToIntArray.java文件,内容如下:
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
public class IntegerListToIntArray {
public static void main(String[] args) {
System.out.println("Converting Integer List to int Array Demo");
System.out.println("---------------------------------------");
// 我们将在后续步骤中在此处添加代码
}
}
- 使用 Maven 编译代码:
cd /home/labex/project
mvn compile
- 运行程序以验证其是否正常工作:
mvn exec:java
你应该会在控制台看到标题文本。如果没有错误,你就可以进入下一步了。
创建并填充一个 Integer 列表
在这一步中,我们将创建一个 Integer 列表并向其中添加一些数字。在开始编码之前,让我们先了解一下为什么需要进行这种转换。
为什么要在整数列表(Integer List)和整数数组(int Array)之间进行转换?
在 Java 中,有两种处理数字的方式:
基本数据类型 (
int):- 基本的数字类型,仅存储数字
- 占用较少的内存
- 不能直接用于列表(List)等集合中
- 示例:
int x = 5;
包装类 (
Integer):- 包含数字的对象
- 可以用于列表(List)等集合中
- 具有额外的方法和特性
- 示例:
Integer x = 5;
我们通常会在列表(需要 Integer 类型)中收集数字,但有些方法为了获得更好的性能需要基本类型的 int 数组。这就是为什么我们需要在它们之间进行转换。
更新 Java 代码
让我们修改 IntegerListToIntArray.java 文件,以创建并显示一个数字列表:
- 确保你位于项目目录中:
cd /home/labex/project
- 打开
src/main/java/IntegerListToIntArray.java文件,并在main方法中现有的打印语句之后添加以下代码:
// Create a List of Integer objects
List<Integer> integerList = new ArrayList<>();
// Add some numbers to the list
integerList.add(1);
integerList.add(2);
integerList.add(3);
integerList.add(4);
integerList.add(5);
// Display the list contents
System.out.println("Original Integer List:");
for (Integer num : integerList) {
System.out.print(num + " ");
}
System.out.println("\n");

- 编译并运行程序:
mvn compile
mvn exec:java
你应该会看到类似于以下的输出:
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
此输出确认我们已成功创建一个 Integer 列表并向其中填充了数字。在下一步中,我们将学习如何将这个列表转换为基本类型的 int 数组。
使用 Stream API 将列表转换为数组
在这一步中,我们将学习第一种使用 Java 的 Stream API 将 Integer 列表转换为 int 数组的方法。Stream API 提供了一种现代且高效的方式来处理数据集合。
理解 Java 流(Stream)
Java 中的流(Stream)就像一个可以逐步处理数据的管道:
- 它从数据源(我们的列表)获取数据
- 处理数据(将
Integer转换为int) - 收集结果(到一个数组中)
添加转换代码
- 确保你位于项目目录中:
cd /home/labex/project
- 打开
src/main/java/IntegerListToIntArray.java文件,并在列表创建代码之后添加以下代码:
// Method 1: Using Stream API
System.out.println("Converting using Stream API:");
// Convert Integer List to int array using Stream
int[] intArrayUsingStream = integerList.stream() // Create a stream from the list
.mapToInt(Integer::intValue) // Convert Integer to int
.toArray(); // Collect results into an array
// Print the converted array
System.out.println("Converted int Array:");
for (int value : intArrayUsingStream) {
System.out.print(value + " ");
}
System.out.println("\n");
- 编译并运行程序:
mvn compile
mvn exec:java
你应该会看到如下输出:
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
Converting using Stream API:
Converted int Array:
1 2 3 4 5
理解代码
让我们来详细分析一下这个转换是如何工作的:
integerList.stream()- 从我们的列表创建一个流.mapToInt(Integer::intValue)- 将每个Integer转换为int.toArray()- 将所有的int值收集到一个数组中
Integer::intValue 被称为方法引用。它是 number -> number.intValue() 的简写形式。
使用 ArrayUtils 将列表转换为数组
在这一步中,我们将学习第二种方法,即使用 Apache Commons Lang 库的 ArrayUtils 类来转换我们的列表。这种方法更为直接,对于初学者来说可能更容易理解。
理解 ArrayUtils
ArrayUtils 类提供了许多处理数组的实用方法。其中,toPrimitive() 方法专门用于将包装类型(如 Integer)转换为基本类型(如 int)。
添加 ArrayUtils 转换代码
- 在
IntegerListToIntArray.java文件的 Stream API 代码之后添加以下代码:
// Method 2: Using ArrayUtils
System.out.println("Converting using ArrayUtils:");
// First convert List<Integer> to Integer[]
Integer[] intermediateArray = integerList.toArray(new Integer[0]);
// Then convert Integer[] to int[]
int[] intArrayUsingArrayUtils = ArrayUtils.toPrimitive(intermediateArray);
// Print the converted array
System.out.println("Converted int Array:");
for (int value : intArrayUsingArrayUtils) {
System.out.print(value + " ");
}
System.out.println("\n");
- 编译并运行程序:
mvn compile
mvn exec:java
现在,你应该能在输出中看到两种转换方法的结果:
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
Converting using Stream API:
Converted int Array:
1 2 3 4 5
Converting using ArrayUtils:
Converted int Array:
1 2 3 4 5
理解代码
ArrayUtils 方法分两步完成转换:
integerList.toArray(new Integer[0])- 将列表转换为Integer对象数组ArrayUtils.toPrimitive()- 将Integer数组转换为int数组
这种方法更为直接,但需要使用 Apache Commons Lang 库。
总结
在这个实验中,你学习了两种在 Java 中将 Integer 列表转换为 int 数组的不同方法:
- 使用 Java 的 Stream API:
int[] array = integerList.stream().mapToInt(Integer::intValue).toArray();
- 现代且函数式的方法
- Java 内置功能
- 适合逐步处理数据
- 使用 Apache Commons Lang 的 ArrayUtils:
int[] array = ArrayUtils.toPrimitive(integerList.toArray(new Integer[0]));
- 更直接的方法
- 需要外部库
- 易于理解和使用
这两种方法都能达到相同的效果,你可以根据自己的需求选择更合适的方法:
- 如果你想要采用现代的函数式方法,可使用 Stream API。
- 如果你想要更简单、易读的代码,可使用 ArrayUtils。
现在,你已经掌握了在 Java 应用程序中进行 Integer 列表和 int 数组之间转换的知识。



