import domain.Domain; import java.util.Arrays; import java.util.List; import java.util.function.BiPredicate; import java.util.function.Predicate; import java.util.stream.Collectors; public class PredicateExamples { public static void main(String[] args) { predicate(); predicateAnd(); predicateOr(); predicateNegate(); predicateChaining(); biPredicate(); biPredicateAsFunctionArgument(); } private static void biPredicateAsFunctionArgument() { List domainList = Arrays.asList(new Domain("google.com", 1), new Domain("i-am-spammer.com", 10), new Domain("mkyong.com", 0), new Domain("microsoft.com", 2)); BiPredicate biPredicate = (x, y) -> { return (x.equals("google.com") || y == 0); }; } private static void biPredicate() { BiPredicate biPredicate = (x, y) -> x.length() == y; System.out.println(biPredicate.test("Bat", 3)); } private static void predicateChaining() { Predicate startsWithA = x -> x.startsWith("A"); Predicate startsWithB = x -> x.startsWith("B"); System.out.println(startsWithA.or(startsWithB).test("Bat")); } private static void predicateNegate() { List list = Arrays.asList("A", "AA", "AAA", "B", "BB", "BBB"); Predicate startsWith = x -> x.startsWith("A"); System.out.println(list.stream().filter(startsWith.negate()).collect(Collectors.toList())); } private static void predicateOr() { List list = Arrays.asList("A", "AA", "AAA", "B", "BB", "BBB"); Predicate startsWith = x -> x.startsWith("A"); Predicate length = x -> x.length() > 2; System.out.println(list.stream().filter(startsWith.or(length)).collect(Collectors.toList())); } private static void predicate() { List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7); Predicate noGreaterThan = x -> x > 5; System.out.println(">>" + list.stream().filter(noGreaterThan).sorted().collect(Collectors.toList())); } private static void predicateAnd() { List list = Arrays.asList(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19); Predicate greaterThan = x -> x > 10; Predicate lessThan = x -> x < 18; System.out.println(list.stream().filter(greaterThan.and(lessThan)).collect(Collectors.toList())); } }