Преобразование массивов int[] в Integer[] в Java
Быстрый ответ: Использование потоков Java 8
Для того чтобы преобразовать массив примитивов int[] в массив оберток Integer[], можно воспользоваться возможностями потоков Java 8:
int[] intArray = {1, 2, 3, 4};
Integer[] integerArray = Arrays.stream(intArray)
.boxed()
.toArray(Integer[]::new);
Метод .boxed() позволяет "упаковать" каждое значение из int в Integer. Метод .toArray() собирает все эти значения в массив.

Старая добрая школа: Метод с for-циклом
Если потоки недоступны или вы предпочитаете классический подход, то воспользуйтесь следующим циклом for:
int[] intArray = {1, 2, 3, 4};
Integer[] integerArray = new Integer[intArray.length];
for (int i = 0; i < intArray.length; i++) {
integerArray[i] = Integer.valueOf(intArray[i]);
}
Метод Integer.valueOf() преобразует примитивный int в объект Integer.
Обратимся к сторонним библиотекам: Apache Commons Lang
Если в вашем проекте используется библиотека Apache Commons Lang, то вы можете применить удобную функцию toObject() для преобразования массива:
int[] intArray = {1, 2, 3, 4};
Integer[] integerArray = ArrayUtils.toObject(intArray);
Это функция немедленно преобразует массив примитивов в массив объектов.
Рассмотрение производительности и неизменяемости
Когда при работе с большими данными возникают вопросы производительности, следует использовать неизменяемые объекты вместо упакованных типов. Рассмотрим пример:
public final class ImmutablePair {
private final int first;
private final int second;
public ImmutablePair(int a, int b) {
this.first = a;
this.second = b;
}
// Не забудьте корректно переопределить методы hashCode и equals
}
Map<ImmutablePair, Integer> map = new HashMap<>();
Визуализация
Преобразование int[] в Integer[] можно сравнить с трансформацией компактных автомобилей в гигантские грузовики — оба преобразования увеличивают размер:
| Этап процесса | Визуальное представление |
|---|---|
| Исходный массив | 🚗🚗🚗 (int[]) |
| Преобразование | 🔄 |
| Получившийся массив | 🚚🚚🚚 (Integer[]) |
Особые соображения при сопоставлении ключей
Обратите внимание, что использовать int[] как ключ для Map не получится, поскольку в Java в качестве ключей может быть использован только Integer[], где равенство определяется по идентичности:
Map<List<Integer>, String> map = new HashMap<>();
map.put(Arrays.asList(integerArray), "Value");
Швейцарский армейский нож: метод
Примените IntStream.of(), чтобы без проблем преобразовать int в Integer, учитывая, что массив может быть пустым:
int[] emptyArray = {};
Integer[] integerArray = IntStream.of(emptyArray)
.boxed()
.toArray(Integer[]::new);
Пользовательская структура данных для комбинаций Integer
Создание собственной структуры данных для управления комбинациями чисел типа Integer может значительно упростить жизнь:
public class IntegerCombo {
// Атрибуты, конструкторы, методы доступа и логика подсчёта
}


