Класс IntStream
Класс IntStream - это специальный вид потока
для работы с примитивными значениями типа int.
Он входит в состав пакета java.util.stream
и позволяет избежать затрат на упаковку чисел
в объекты Integer. Такой поток можно создать
из массива, диапазона чисел или коллекции, а затем
обрабатывать его с помощью методов filter,
map, sum и других. В отличие от
обычного Stream<Integer>, класс
IntStream содержит дополнительные методы
для числовых операций, например sum,
average, min и max.
Синтаксис
IntStream stream = IntStream.range(start, end);
IntStream stream = IntStream.of(values);
Основные способы создания потока - методы
range, rangeClosed и of.
Первый параметр задаёт начало диапазона,
второй - конец диапазона.
Пример
Давайте создадим поток из диапазона чисел и выведем каждое из них на экран:
import java.util.stream.IntStream;
public class Main
{
public static void main(String[] args)
{
IntStream.range(1, 5).forEach(System.out::println);
}
}
Результат выполнения кода:
1
2
3
4
Пример
Давайте посчитаем сумму чисел от 1 до
5 включительно:
import java.util.stream.IntStream;
public class Main
{
public static void main(String[] args)
{
int res = IntStream.rangeClosed(1, 5).sum();
System.out.println(res);
}
}
Результат выполнения кода:
15
Пример
Давайте отфильтруем только чётные числа из потока и соберём их в массив:
import java.util.stream.IntStream;
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{
int[] res = IntStream.range(1, 10)
.filter(n -> n % 2 == 0)
.toArray();
System.out.println(Arrays.toString(res));
}
}
Результат выполнения кода:
[2, 4, 6, 8]
Пример
Давайте преобразуем каждое число потока,
умножив его на 2, и найдём среднее значение:
import java.util.stream.IntStream;
import java.util.OptionalDouble;
public class Main
{
public static void main(String[] args)
{
OptionalDouble res = IntStream.of(1, 2, 3, 4, 5)
.map(n -> n * 2)
.average();
System.out.println(res.getAsDouble());
}
}
Результат выполнения кода:
6.0
Смотрите также
-
метод
range,
который создаёт поток чисел в диапазоне -
метод
sum,
который возвращает сумму чисел потока -
метод
boxed,
который преобразует поток в Stream -
класс
LongStream,
который представляет поток длинных чисел