Метод filter() в Java Stream API используется для фильтрации элементов в стриме. Он принимает в качестве аргумента предикат, который определяет, оставлять элемент в стриме или удалить его. Предикат - это функция, которая принимает элемент стрима в качестве аргумента и возвращает булево значение, указывающее, оставлять элемент или удалить его.
Например, если у нас есть стрим целых чисел и мы хотим оставить только четные числа, мы можем использовать метод filter() следующим образом:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
Stream<Integer> stream = numbers.stream();
// Оставляем только четные числа
Stream<Integer> evenNumbersStream = stream.filter(n -> n % 2 == 0);
// Собираем результат в список
List<Integer> evenNumbersList = evenNumbersStream.collect(Collectors.toList());
System.out.println(evenNumbersList); // Выводит: [2, 4, 6]
Как видно из примера, метод filter() возвращает новый стрим, содержащий только элементы, для которых предикат возвращает true. Этот новый стрим можно использовать для дальнейшей обработки данных.
Например, в следующем коде мы создаем список чисел и фильтруем его, чтобы оставить только нечетные числа:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
List<Integer> oddNumbers = numbers.stream()
.filter(n -> n % 2 != 0)
.collect(Collectors.toList());
System.out.println(oddNumbers); // Выводит: [1, 3, 5, 7, 9]
В этом примере мы используем метод stream(), чтобы получить стрим из списка чисел, затем используем метод filter() для отбора только нечетных чисел, и наконец используем метод collect() для преобразования результата обратно в список.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov