Комбинирование предикатов
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()