Введение
В этом практическом занятии (лабораторной работе) вы научитесь преобразовывать список целых чисел (Integer List) в массив примитивных целых чисел (int Array) на Java. Это распространенная задача в программировании на Java, когда вам нужно работать с массивами примитивных типов после сбора данных в списке.
Мы рассмотрим два различных подхода для выполнения этого преобразования:
- Использование Stream API Java с методом
stream.mapToInt() - Использование метода
ArrayUtils.toPrimitive()из библиотеки Apache Commons Lang
По завершении этого практического занятия вы освоите оба метода и сможете применять их в своих собственных Java-приложениях.
Создайте Java - класс для нашего эксперимента
На первом этапе мы создадим Java-класс, чтобы продемонстрировать методы преобразования. Мы будем использовать Maven для управления зависимостями и структурой проекта.
- Сначала убедитесь, что вы находитесь в директории проекта:
cd /home/labex/project
- Создайте новый Java-файл в исходной директории Maven:
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;
Обертка (
Wrapper Class,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 List List to int Array Demo
-------
Original Integer List:
1 2 3 4 5
Этот вывод подтверждает, что мы успешно создали список объектов Integer и заполнили его числами. На следующем этапе мы научимся преобразовывать этот список в массив примитивных типов int.
Преобразуйте список в массив с использованием Stream API
На этом этапе мы научимся первому методу преобразования списка объектов Integer в массив примитивных типов int с использованием Stream API Java. Stream API предоставляет современный и эффективный способ обработки коллекций данных.
Понимание Java Stream
Stream в Java представляет собой своего рода конвейер, который может обрабатывать данные пошагово:
- Он берет данные из источника (нашего списка).
- Обрабатывает данные (преобразует
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()- Создает поток (stream) из нашего списка..mapToInt(Integer::intValue)- Преобразует каждый объектIntegerв примитивный типint..toArray()- Собирает все значенияintв массив.
Integer::intValue называется ссылкой на метод. Это сокращенный способ записи number -> number.intValue().
Преобразование списка в массив с использованием ArrayUtils
На этом этапе мы научимся второму методу преобразования списка с использованием класса ArrayUtils из библиотеки Apache Commons Lang. Этот метод более простой и может быть легче для понимания новичкам.
Понимание класса 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.
Резюме
В этом LabEx вы узнали два различных способа преобразования списка объектов Integer в массив примитивных типов int на Java:
- Использование Stream API Java:
int[] array = integerList.stream().mapToInt(Integer::intValue).toArray();
- Современный и функциональный подход.
- Встроен в Java.
- Хорош для пошаговой обработки данных.
- Использование класса
ArrayUtilsиз библиотеки Apache Commons Lang:
int[] array = ArrayUtils.toPrimitive(integerList.toArray(new Integer[0]));
- Более простой подход.
- Требует внешней библиотеки.
- Легко понять и использовать.
Оба метода дают одинаковый результат, и вы можете выбрать тот, который лучше подходит для ваших нужд:
- Используйте Stream API, если вам нужен современный, функциональный подход.
- Используйте
ArrayUtils, если вам нужен более простой и читаемый код.
Теперь у вас есть знания для преобразования между списками Integer и массивами int в ваших Java-приложениях.



