Introducción
Este laboratorio lo guiará a través del proceso de convertir una lista de enteros (Integer List) en una matriz de enteros (int Array) en Java. Esta es una tarea común en la programación Java cuando se necesita trabajar con matrices primitivas después de recopilar datos en una lista.
Exploraremos dos enfoques diferentes para lograr esta conversión:
- Utilizando la API de flujos (
Stream API) de Java con el métodostream.mapToInt() - Utilizando el método
ArrayUtils.toPrimitive()de Apache Commons Lang
Al final de este laboratorio, entenderá ambos métodos y podrá aplicarlos en sus propias aplicaciones Java.
Crea una clase Java para nuestro experimento
En este primer paso, crearemos una clase Java para demostrar los métodos de conversión. Utilizaremos Maven para gestionar nuestras dependencias y la estructura del proyecto.
- Primero, verifica que estés en el directorio del proyecto:
cd /home/labex/project
- Crea un nuevo archivo Java en el directorio de origen de Maven:
cd src/main/java

- Crea
IntegerListToIntArray.javacon el siguiente contenido:
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("---------------------------------------");
// We'll add our code here in the following steps
}
}
- Compila el código utilizando Maven:
cd /home/labex/project
mvn compile
- Ejecuta el programa para verificar que funcione:
mvn exec:java
Deberías ver el texto del encabezado impreso en la consola. Si no hay errores, estás listo para pasar al siguiente paso.
Crea y llena una lista de Integer
En este paso, crearemos una lista de enteros (Integer List) y le agregaremos algunos números. Antes de comenzar a codificar, entendamos por qué necesitamos esta conversión.
¿Por qué convertir entre una lista de enteros (Integer List) y una matriz de enteros (int Array)?
En Java, tenemos dos formas de trabajar con números:
Tipo primitivo (
int):- Tipo de número básico que almacena solo el número.
- Utiliza menos memoria.
- No se puede usar directamente en colecciones como
List. - Ejemplo:
int x = 5;
Clase envolvente (
Integer):- Objeto que contiene un número.
- Se puede usar en colecciones como
List. - Tiene métodos y características adicionales.
- Ejemplo:
Integer x = 5;
A menudo recopilamos números en una lista (que requiere Integer), pero algunos métodos necesitan una matriz primitiva de enteros (int array) para un mejor rendimiento. Por eso necesitamos convertir entre ellos.
Actualizar el código Java
Modifiquemos nuestro archivo IntegerListToIntArray.java para crear y mostrar una lista de números:
- Asegúrate de estar en el directorio del proyecto:
cd /home/labex/project
- Abre
src/main/java/IntegerListToIntArray.javay agrega el siguiente código dentro del métodomain, después de las declaraciones de impresión existentes:
// 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");

- Compila y ejecuta el programa:
mvn compile
mvn exec:java
Deberías ver una salida similar a esta:
Converting List List to int Array Demo
-------
Original Integer List:
1 2 3 4 5
Esta salida confirma que hemos creado exitosamente una lista de enteros (Integer List) y la hemos llenado con números. En el siguiente paso, aprenderemos cómo convertir esta lista en una matriz primitiva de enteros (int array).
Convierte una lista a un array utilizando la API Stream
En este paso, aprenderemos nuestro primer método para convertir una lista de enteros (Integer List) en una matriz de enteros (int array) utilizando la API de Streams de Java. La API de Streams proporciona una forma moderna y eficiente de procesar colecciones de datos.
Comprendiendo los Streams de Java
Un Stream en Java es como una tubería que puede procesar datos paso a paso:
- Toma datos de una fuente (nuestra lista).
- Procesa los datos (convierte
Integeraint). - Recopila los resultados (en una matriz).
Agregar el código de conversión
- Asegúrate de estar en el directorio del proyecto:
cd /home/labex/project
- Abre
src/main/java/IntegerListToIntArray.javay agrega este código después del código de creación de la lista:
// 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");
- Compila y ejecuta el programa:
mvn compile
mvn exec:java
Deberías ver una salida como esta:
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
Comprendiendo el código
Analicemos cómo funciona la conversión:
integerList.stream()- Crea un stream a partir de nuestra lista..mapToInt(Integer::intValue)- Convierte cadaIntegeren unint..toArray()- Recopila todos los valoresinten una matriz.
Integer::intValue se llama referencia a método. Es una forma abreviada de escribir number -> number.intValue().
Convierte una lista a un array utilizando ArrayUtils
En este paso, aprenderemos un segundo método para convertir nuestra lista utilizando la clase ArrayUtils de la librería Apache Commons Lang. Este método es más sencillo y puede ser más fácil de entender para los principiantes.
Comprendiendo ArrayUtils
La clase ArrayUtils proporciona muchos métodos útiles para trabajar con matrices. El método toPrimitive() en particular nos ayuda a convertir de tipos envolventes (como Integer) a tipos primitivos (como int).
Agregar el código de conversión de ArrayUtils
- Agrega este código a tu archivo
IntegerListToIntArray.javadespués del código de la API de Streams:
// 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");
- Compila y ejecuta el programa:
mvn compile
mvn exec:java
Ahora deberías ver ambos métodos de conversión en la salida:
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
Comprendiendo el código
El método de ArrayUtils funciona en dos pasos:
integerList.toArray(new Integer[0])- Convierte la lista en una matriz de objetosInteger.ArrayUtils.toPrimitive()- Convierte la matriz deIntegeren una matriz deint.
Este método es más sencillo, pero requiere la librería Apache Commons Lang.
Resumen
En este laboratorio (lab), aprendiste dos formas diferentes de convertir una lista de Integer a una matriz de int en Java:
- Utilizando la API de Streams de Java:
int[] array = integerList.stream().mapToInt(Integer::intValue).toArray();
- Enfoque moderno y funcional.
- Integrado en Java.
- Bueno para procesar datos paso a paso.
- Utilizando
ArrayUtilsde Apache Commons Lang:
int[] array = ArrayUtils.toPrimitive(integerList.toArray(new Integer[0]));
- Enfoque más sencillo.
- Requiere una librería externa.
- Fácil de entender y usar.
Ambos métodos logran el mismo resultado, y puedes elegir el que mejor se adapte a tus necesidades:
- Utiliza la API de Streams cuando desees un enfoque moderno y funcional.
- Utiliza
ArrayUtilscuando desees un código más sencillo y legible.
Ahora tienes el conocimiento para convertir entre listas de Integer y matrices de int en tus aplicaciones Java.



