Преобразование массива
- Массив int[] → Коллекция List<Integer>
- Коллекция List<Integer> → Массив int[]
- Альтернатива: вручную, без Stream API
- Почему нельзя использовать List<int>?
- Вывод
Работа с массивами и коллекциями — одна из основ Java-разработки. Но массивы и коллекции имеют разные особенности:
Массивы — это структуры фиксированной длины.
Коллекции (List
, Set
, и др.) — гибкие контейнеры, удобные для добавления, удаления и фильтрации данных.
Часто возникает задача: преобразовать массив int[]
в List<Integer>
и обратно. Ниже показано, как это делается с использованием Stream API.
1. Массив int[] → Коллекция List<Integer>
int[] numbers = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.stream(numbers) // превращаем в IntStream
.boxed() // упаковываем примитивы в Integer
.collect(Collectors.toList());
System.out.println(list); // [1, 2, 3, 4, 5]
Метод boxed()
превращает поток примитивов IntStream
в поток объектов Stream<Integer>
, а затем мы собираем его в коллекцию с помощью collect(Collectors.toList())
.
2. Коллекция List<Integer> → Массив int[]
List<Integer> list = Arrays.asList(10, 20, 30, 40);
int[] array = list.stream()
.mapToInt(Integer::intValue)
.toArray();
System.out.println(Arrays.toString(array)); // [10, 20, 30, 40]
Метод mapToInt()
преобразует поток объектов Integer
обратно в поток примитивов int
, а затем .toArray()
превращает его в массив.
3. Альтернатива: вручную, без Stream API
Если вы работаете со старыми версиями Java или хотите обойтись без стримов:
int[] arr = {1, 2, 3};
List<Integer> list = new ArrayList<>();
for (int i : arr) {
list.add(i);
}
int[] backToArray = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
backToArray[i] = list.get(i);
}
4. Почему нельзя использовать List<int>?
Java-коллекции работают только с объектами, а int
— это примитив. Поэтому мы используем обёртку Integer
. Стримы помогают нам оборачивать (boxed()
) и разворачивать (mapToInt()
) примитивы.
5. Вывод
Преобразование | Метод |
---|---|
int[] → List<Integer> | Arrays.stream(...).boxed().collect(...) |
List<Integer> → int[] | list.stream().mapToInt(...).toArray() |
Используйте Stream API, если хотите лаконичный и читаемый код. А если вам нужно больше контроля — классические циклы остаются отличной альтернативой.

Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.