Pascal4eg

 Java | Фишки и трюки

Комбинирование предикатов

List fruits = List.of("apple", "orange", "pineapple", "grapefruit", "melon");
Predicate isEqualsOrange = Predicate.isEqual("orange");
Predicate isEqualsGrapefruit = Predicate.isEqual("grapefruit");
Predicate isEqualsCitrus = isEqualsOrange.or(isEqualsGrapefruit);
Predicate isNotEqualsCitrus = isEqualsCitrus.negate();

fruits.stream().filter(isEqualsOrange).forEach(System.out::println);
// orange

fruits.stream().filter(isEqualsCitrus).forEach(System.out::println);
// orange grapefruit

fruits.stream().filter(isNotEqualsCitrus).forEach(System.out::println);
// apple pineapple melon

🧩 Predicate - встроенный функциональный интерфейс, добавленный в Java 8 в пакет java.util.function.

Принимает на вход значение, проверяет состояние и возвращает boolean значение в качестве результата.

Предикаты можно комбинировать между собой и в результате получать составные условия.

У предиката есть 3 default метода для составления условия. Имена методов говорящие: and(), or(), negate()