You know how to write lambdas to create predicates,
but did you know that the interfaces offers a lot of methods to create and combine them?
๐๐๐ฅ๐ฅ ๐ญ๐ก๐ ๐ข๐ง๐ฌ๐ญ๐๐ง๐๐ ๐ฆ๐๐ญ๐ก๐จ๐๐ฌ '๐๐ง๐', '๐จ๐ซ', '๐ง๐๐ ๐๐ญ๐' ๐๐จ๐ซ ๐๐จ๐จ๐ฅ๐๐๐ง ๐๐จ๐ซ๐ฆ๐ฎ๐ฅ๐๐ฌ.
Predicate<String> isNull = Objects::isNull; Predicate<String> isEmpty = String::isEmpty; Predicate<String> isNullOrEmpty = isNull.or(isEmpty); Predicate<String> isNotNullNorEmpty = isNullOrEmpty.negate(); Predicate<String> shorterThan5 = s -> s.length() < 5; Predicate<String> p = isNotNullNorEmpty.and(shorterThan5);
๐๐ก๐ ๐๐๐๐ญ๐จ๐ซ๐ฒ ๐ฆ๐๐ญ๐ก๐จ๐ '๐ง๐จ๐ญ' ๐ข๐ฌ ๐ ๐ซ๐๐๐ญ ๐ญ๐จ ๐ข๐ง๐ฏ๐๐ซ๐ญ ๐ ๐ฆ๐๐ญ๐ก๐จ๐ ๐ซ๐๐๐๐ซ๐๐ง๐๐.
Predicate<Collection<String>> isEmpty = Collection::isEmpty; Predicate<Collection<String>> isNotEmpty = Predicate.not(isEmpty);
๐๐ง๐ ๐ข๐ ๐ฒ๐จ๐ฎ ๐ฉ๐๐ฌ๐ฌ ๐ฌ๐จ๐ฆ๐ ๐จ๐๐ฃ๐๐๐ญ ๐ญ๐จ '๐ข๐ฌ๐๐ช๐ฎ๐๐ฅ', ๐ฒ๐จ๐ฎ ๐ ๐๐ญ ๐ ๐ฉ๐ซ๐๐๐ข๐๐๐ญ๐ ๐ญ๐ก๐๐ญ ๐๐ก๐๐๐ค๐ฌ ๐ข๐ง๐ญ๐๐ง๐๐๐ฌ ๐๐จ๐ซ ๐๐ช๐ฎ๐๐ฅ๐ข๐ญ๐ฒ ๐ฐ๐ข๐ญ๐ก ๐ข๐ญ.
Predicate<String> isEqualToDuke = Predicate.isEqual("Duke");