Метод filter класса IntStream
Метод filter класса IntStream фильтрует элементы потока,
оставляя только те, которые удовлетворяют заданному условию.
Метод принимает один параметр - функциональный интерфейс
Predicate,
который описывает условие фильтрации.
Метод возвращает новый поток IntStream,
содержащий только те элементы исходного потока,
для которых предикат вернул true.
Синтаксис
IntStream filter(IntPredicate predicate)
Пример
Давайте отфильтруем поток целых чисел, оставив только чётные числа:
import java.util.stream.IntStream;
public class Main
{
public static void main(String[] args)
{
IntStream stream = IntStream.of(1, 2, 3, 4, 5, 6);
IntStream filtered = stream.filter(n -> n % 2 == 0);
filtered.forEach(System.out::println);
}
}
Результат выполнения кода:
2
4
6
Пример
Давайте отфильтруем поток чисел,
оставив только числа больше 2,
и соберём результат в массив:
import java.util.stream.IntStream;
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{
IntStream stream = IntStream.of(1, 2, 3, 4, 5);
int[] res = stream.filter(n -> n > 2).toArray();
System.out.println(Arrays.toString(res));
}
}
Результат выполнения кода:
[3, 4, 5]
Пример
Давайте применим несколько фильтров последовательно,
оставив только чётные числа, которые больше 2:
import java.util.stream.IntStream;
public class Main
{
public static void main(String[] args)
{
IntStream stream = IntStream.of(1, 2, 3, 4, 5, 6);
IntStream filtered = stream
.filter(n -> n % 2 == 0)
.filter(n -> n > 2);
filtered.forEach(System.out::println);
}
}
Результат выполнения кода:
4
6