Predicate函數式接口

Predicate接口主要用於流的篩選,好比在filter方法中傳入Predicate判斷。函數

做爲函數式接口,這裏竟然有三個default方法,一個static方法,子孫滿堂!3d

正統的接口方法,就是boolean test​(T t),接受一個泛型T,若是輸入參數與謂詞匹配,則返回true,不然返回false。對象

先來看看靜態相等判斷方法,static <T> Predicate<T> isEqual​(Object targetRef)blog

這裏判斷對象是否相等,結合是否爲空的處理,這裏用了 Objects::isNull 和object.equals的方法。接口

再來看看默認or方法,default Predicate<T> or​(Predicate<? super T> other)ip

返回一個組合謂詞,表示此謂詞與另外一個謂詞的短路邏輯OR。在評估組合謂詞時,若是此謂詞爲true,則不評估其餘謂詞。rem

這裏就要求如參不能爲null。get

default Predicate<T> negate​()  返回表示此謂詞的邏輯否認的謂詞。io

那麼這個也很好理解了,就是與操做,default Predicate<T> and​(Predicate<? super T> other)test

洗個簡單的使用demo:

輸出:

還有IntPredicate,DoublePredicate,LongPredicate,比較特別一點的就是Bipredicate,有兩個泛型類型參數

就像這樣,是否是就容易理解多啦。

在流的不少方法中,都使用了Predicate接口做爲參數判斷!好比下面的 Collection.removeIf

相關文章
相關標籤/搜索