常用的函數式接口_Predicate接口_默認方法and

默認方法:and

既然是條件判斷,就會存在與、或、非三種常見的邏輯關係。其中將兩個Predicate 條件使用“與”邏輯連接起來實現“並且”的效果時,可以使用default方法and 。其JDK源碼爲:

default Predicate<T> and(Predicate<? super T> other) {
    Objects.requireNonNull(other);
    return (t) ‐> test(t) && other.test(t);
}
package com.learn.demo06.Predicate;

import java.util.function.Predicate;

/*
    邏輯表達式:可以連接多個判斷的條件
    &&:與運算符,有false則false
    ||:或運算符,有true則true
    !:非(取反)運算符,非真則假,非假則真

    需求:判斷一個字符串,有兩個判斷的條件
        1.判斷字符串的長度是否大於5
        2.判斷字符串中是否包含a
    兩個條件必須同時滿足,我們就可以使用&&運算符連接兩個條件

    Predicate接口中有一個方法and,表示並且關係,也可以用於連接兩個判斷條件
    default Predicate<T> and(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> this.test(t) && other.test(t);
    }
    方法內部的兩個判斷條件,也是使用&&運算符連接起來的
 */
public class Demo02Predicate_and {
    /*
        定義一個方法,方法的參數,傳遞一個字符串
        傳遞兩個Predicate接口
            一個用於判斷字符串的長度是否大於5
            一個用於判斷字符串中是否包含a
            兩個條件必須同時滿足
     */
    public static boolean checkString(String s, Predicate<String> pre1,Predicate<String> pre2){
        //return pre1.test(s) && pre2.test(s);
        return pre1.and(pre2).test(s);//等價於return pre1.test(s) && pre2.test(s);
    }

    public static void main(String[] args) {
        //定義一個字符串
        String s = "abcdef";
        //調用checkString方法,參數傳遞字符串和兩個Lambda表達式
        boolean b = checkString(s,(String str)->{
            //判斷字符串的長度是否大於5
            return str.length()>5;
        },(String str)->{
            //判斷字符串中是否包含a
            return str.contains("a");
        });
        System.out.println(b);
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章