天天看點

java8 Predicate源碼學習主要自己定義Predicate的與或運算

看别人寫的用法真蛋疼。

主要自己定義Predicate的與或運算

code

public Predicate mypredicateand(Predicate predicate1, Predicate predicate2) {
        Objects.requireNonNull(predicate2);
        return (x) -> predicate1.test(x) && predicate2.test(x);
    }

    public Predicate mypredicateor(Predicate predicate1, Predicate predicate2) {
        Objects.requireNonNull(predicate2);
        return (x) -> predicate1.test(x) || predicate2.test(x);
    }
           

test

@Test
    public void testMyPredicateand() {
        Predicate<String> predicate1 = new Predicate<String>() {
            @Override
            public boolean test(String o) {
                return o.length() >= 5;
            }
        };
        Predicate<String> predicate2 = new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.length() <= 7;
            }
        };
        Predicate<String> predicate = mypredicateand(predicate1, predicate2);
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("OTHKJ");
        list.add("12345678");
        list.add("12345");
        list.add("123876533");
        list.add("123");
        System.out.println(list);
        Object[] result = list.stream().filter(predicate).toArray();
        for (Object obj : result)
            System.out.println(obj);
    }

    @Test
    public void testMyPredicateor() {
        Predicate<String> predicate1 = new Predicate<String>() {
            @Override
            public boolean test(String o) {
                return o.length() < 5;
            }
        };
        Predicate<String> predicate2 = new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.length() > 7;
            }
        };
        Predicate<String> predicate = mypredicateor(predicate1, predicate2);
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("OTHKJ");
        list.add("12345678");
        list.add("12345");
        list.add("123876533");
        list.add("123");
        System.out.println(list);
        Object[] result = list.stream().filter(predicate).toArray();
        for (Object obj : result)
            System.out.println(obj);
    }
           

result

[a, OTHKJ, 12345678, 12345, 123876533, 123]
OTHKJ
12345
           
[a, OTHKJ, 12345678, 12345, 123876533, 123]
a
12345678
123876533
123
           

版權聲明:本文為CSDN部落客「weixin_33975951」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_33975951/article/details/92516497