1. 程式人生 > >Predicate函式式介面

Predicate函式式介面

Predicate介面主要用於流的篩選,比如在filter方法中傳入Predicate判斷。

作為函式式介面,這裡居然有三個default方法,一個static方法,子孫滿堂!

正統的介面方法,就是boolean test​(T t),接受一個泛型T,如果輸入引數與謂詞匹配,則返回true,否則返回false。

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

這裡判斷物件是否相等,結合是否為空的處理,這裡用了 Objects::isNull 和object.equals的方法。

再來看看預設or方法,default Predicate<T> or​(Predicate<? super T> other)

返回一個組合謂詞,表示此謂詞與另一個謂詞的短路邏輯OR。在評估組合謂詞時,如果此謂詞為true,則不評估其他謂詞。

這裡就要求如參不能為null。

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

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

洗個簡單的使用demo:

輸出:

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

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

在流的很多方法中,都使用了Predicate介面作為引數判斷!比如下面的 Collection.removeIf