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("---------------------------------------");
// 我们将在后续步骤中在此处添加代码
}
}
我们通常会在列表(需要 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 提供了一种现代且高效的方式来处理数据集合。
// 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 类来转换我们的列表。这种方法更为直接,对于初学者来说可能更容易理解。
在 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
"
Practicing and reading side by side the commands makes this platform more intelligent ."
— Supriya Kumari
"
This was an excellent lab activity that I was able to participate in. Thank you to the developers and wonderful team that provided this useful learning tool."