Научитесь преобразовывать массив примитивов(int, long или double) в массив объектов(Integer, Double или Long) и наоборот. Например, мы преобразуем int[] в Integer[], а затем преобразуем обратно Integer[] в int[].
Обратите внимание, что все методы следуют одной и той же логике для процесса преобразования, т. е. итерируют по существующему массиву, преобразуют текущий элемент в объект(или примитив) и добавляют в новый массив. API, обсуждаемые ниже, добавляют синтаксический сахар, чтобы сделать код более читаемым.
1. Конвертация с использованием Stream API
Нам нужно использовать метод Stream.toArray(), который возвращает массив, содержащий элементы из заданного потока. Нам нужно преобразовать тип элемента перед тем, как собирать его в новый массив.
1.1. Примитивный массив в массив объектов
Программа Java для преобразования int[] в Integer[]. Обратите внимание, что по умолчанию метод toArray() возвращает Object[], поэтому важно указать функцию-генератор Integer[]::new.
int[] primitiveArray = new int[]{0, 1, 2, 3, 4, 5};Integer[] outputArray = Arrays.stream(primitiveArray).boxed().toArray(Integer[]::new);
1.2. Объектный массив в примитивный массив
Программа Java для преобразования Integer[] в int[]. Чтобы преобразовать объект Integer в значение int, мы используем функцию stream.mapToInt(). Этот метод возвращает IntStream, состоящий из значений int, соответствующих объектам Integer в массиве.
Если в массиве есть пустые элементы, то этот метод выдаст исключение NullPointerException.
Integer[] objectArray = new Integer[]{0, 1, 2, 3, 4, 5};int[] outputArray = Arrays.stream(objectArray).mapToInt(Integer::intValue).toArray();
2. Конвертация с использованием ArrayUtils от Apache Common
Класс ArrayUtils имеет много статических методов утилит для выполнения общих задач в одном операторе. Это улучшает читаемость кода и, таким образом, его легко поддерживать.
Оба метода используют цикл for для итерации по исходному массиву и заполнения нового массива, поэтому с точки зрения производительности вы увидите большую разницу по сравнению с использованием Stream API.
Последнюю версию Common's Lang можно найти в репозитории Maven.
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>
2.1. Примитивный массив в массив объектов
Метод ArrayUtils.toObject() преобразует массив примитивов в массив объектов. Метод возвращает null для входного массива null.
int[] primitiveArray = new int[]{0, 1, 2, 3, 4, 5};Integer[] outputArray = ArrayUtils.toObject(primitiveArray);
2.2. Объектный массив в примитивный массив
Метод ArrayUtils.toPrimitive() преобразует массив объектов в массив соответствующих примитивов. Этот метод выдает исключение NullPointerException, если содержимое массива равно null.
Integer[] objectArray = new Integer[]{0, 1, 2, 3, 4, 5};int[] outputArray = ArrayUtils.toPrimitive(objectArray);
3. Заключение
В этом простом руководстве по Java мы научились преобразовывать примитивные массивы в массивы объектов и преобразовывать массивы объектов в примитивные массивы. Мы научились использовать для этого Java Streams API и класс ArrayUtils Apache Common.
Оба метода будут