Почему не получается преобразовать stream в List?

почему в первом случае при попытке преобразовать стрим в лист - ошибка компиляции, а во втором - все ок? По-сути, ведь идентичные действия?

public class Test1 {
    public static void main(String[] args) {

        // Вариант 1
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        List<Integer> integerList = Arrays.stream(array)
                .filter(s -> s%2 == 0)
                .collect(Collectors.toList()); // compile error

        // Вариант 2
        List<String> stringList = Arrays.stream(args)
                .filter(s -> s.length() <= 2)
                .collect(Collectors.toList()); // ok
    }
}

Ответы (1 шт):

Автор решения: First Sin

Проблема заключается в том, что int - примитивный тип, поэтому в первом случае у вас используется не стандартный Stream, а IntStream, который является последовательностью примитивных целочисленных значений. Так как вы не можете создать список, хранящий примитивы, необходимо их превратить в их объектную оболочку (т.е int -> Integer). Для этого используйте метод boxed():

List<Integer> integerList = Arrays.stream(array)
        .filter(s -> s % 2 == 0)
        .boxed()
        .collect(Collectors.toList());
→ Ссылка