Метод boxed
Метод boxed класса IntStream преобразует
поток примитивных значений int в поток объектов
Integer (то есть в Stream<Integer>).
Метод не принимает параметров и возвращает новый поток,
состоящий из элементов исходного потока, упакованных
в соответствующие объекты-обертки.
Такой метод бывает полезен, когда после работы с
числовым потоком нужно использовать методы, доступные
только для объектных потоков, например, собрать
элементы в список List<Integer>.
Синтаксис
IntStream.boxed()
Пример
Давайте преобразуем поток чисел от 1 до 5
в поток объектов и соберем их в список:
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main
{
public static void main(String[] args)
{
List<Integer> res = IntStream.range(1, 6)
.boxed()
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте отфильтруем четные числа и упакуем
оставшиеся в объекты Integer:
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main
{
public static void main(String[] args)
{
List<Integer> res = IntStream.range(1, 6)
.filter(n -> n % 2 == 0)
.boxed()
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[2, 4]