Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

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
false

Predicate.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 и их комбинирование.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.