Convert int[] to List and Back Using Streams
- int[] Array → List<Integer> Collection
- List<Integer> Collection → int[] Array
- Alternative: Manual Conversion Without Stream API
- Why List<int> Is Not Allowed
- Conclusion
Working with arrays and collections is a fundamental part of Java development. But they have different characteristics:
Arrays are fixed-length structures.
Collections (List
, Set
, etc.) are flexible containers that allow easy adding, removing, and filtering of data.
It's a common task to convert an int[]
array to a List<Integer>
and back. Below is how it's done using the Stream API.
1. int[] Array → List<Integer> Collection
int[] numbers = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.stream(numbers) // convert to IntStream
.boxed() // box primitives to Integer
.collect(Collectors.toList());
System.out.println(list); // [1, 2, 3, 4, 5]
The boxed()
method converts the primitive IntStream
into a stream of objects Stream<Integer>
, which we then collect into a list using collect(Collectors.toList())
.
2. List<Integer> Collection → int[] Array
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]
The mapToInt()
method converts a stream of Integer
objects back to a stream of int
primitives, and .toArray()
transforms it into an array.
3. Alternative: Manual Conversion Without Stream API
If you're working with older Java versions or prefer avoiding streams:
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. Why List<int> Is Not Allowed
Java collections work only with objects, and int
is a primitive. That's why we use the wrapper class Integer
. Streams help us with boxing (boxed()
) and unboxing (mapToInt()
).
5. Conclusion
Conversion | Method |
---|---|
int[] → List<Integer> | Arrays.stream(...).boxed().collect(...) |
List<Integer> → int[] | list.stream().mapToInt(...).toArray() |
Use the Stream API if you want concise and readable code. If you need more control — classic loops are still a great alternative.

Please log in or register to have a possibility to add comment.