Predicate
Условие: функция, которая принимает значение и возвращает `boolean`.
Доступно с: Java 8
Синтаксис
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}Примеры
Проверка и комбинирование условий:
void main() {
Predicate<String> notEmpty = s -> !s.isEmpty();
Predicate<String> shortWord = s -> s.length() < 5;
IO.println(notEmpty.test(""));
IO.println(notEmpty.and(shortWord).test("java"));
IO.println(shortWord.negate().test("java"));
}Результат:
false
true
falsePredicate.not() со ссылкой на метод:
void main() {
List<String> lines = List.of("a", " ", "b", "");
IO.println(lines.stream().filter(Predicate.not(String::isBlank)).toList());
}Результат:
[a, b]Примечания
Комбинируется методами and(), or(), negate(). Predicate.not() (Java 11) удобен, когда нужно отрицание ссылки на метод. Принимается в filter(), removeIf(), anyMatch(), takeWhile().
См. также
- Stream.filter() — Оставляет в потоке только элементы, подходящие под условие.
- Collection.removeIf() — Удаляет из коллекции все элементы, подходящие под условие.
- Function — Функция, которая принимает значение типа `T` и возвращает значение типа `R`.
Вопросы и ответы по теме
В учебнике
- Функциональные интерфейсы — Функциональные интерфейсы в Java: аннотация @FunctionalInterface, стандартные Function, Predicate, Consumer, Supplier и их комбинирование.