最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8函數式接口Predicate用法示例詳解

 更新時間:2023年07月09日 09:37:55   作者:今夜有點兒亮  
這篇文章主要為大家介紹了Java8函數式接口Predicate用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

Java8函數式接口Predicate用法

在Java 8中,Predicate<T>是一個函數式接口,用于對某個類型的對象進行條件判斷,返回一個布爾值。

Predicate<T>接口定義

@FunctionalInterface
public interface Predicate<T> {
    boolean test(T t);
}

Predicate<T>接口只有一個抽象方法 test,該方法接受一個泛型參數并返回一個布爾值。你可以使用Lambda表達式或方法引用來實現(xiàn) Predicate<T> 接口,根據自己的需求編寫條件判斷代碼。

Predicate<T> 簡單示例

Predicate<Integer> isEven = num -> num % 2 == 0;
System.out.println(isEven.test(4)); // 輸出: true
System.out.println(isEven.test(7)); // 輸出: false

上述示例創(chuàng)建了一個用于判斷一個整數是否為偶數的 Predicate<Integer> 對象 isEven。通過調用 test 方法,你可以傳入一個整數,然后得到對應的布爾值結果。

Predicate<T> 接口還可以與其他函數式接口結合使用,如 filter 方法配合 Stream 使用,進行元素的過濾操作。

Predicate<T> 元素過濾

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class PredicateExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        Predicate<Integer> isEven = num -> num % 2 == 0;
        Predicate<Integer> isGreaterThan5 = num -> num > 5;
        List<Integer> filteredNumbers = numbers.stream()
                                               .filter(isEven.and(isGreaterThan5))
                                               .collect(Collectors.toList());
        System.out.println(filteredNumbers); // 輸出: [6, 8, 10]
    }
}

在上述示例中,我們使用 filter 方法結合 Predicate<T> 對流中的元素進行過濾,只保留了偶數。最終將結果收集到一個新的列表中。

Predicate<T> 接口提供默認方法

如 and、or、negate,用于進行條件的組合、取反等操作。

以下是三個默認方法的說明和示例:

1. and(Predicate<? super T> other)

返回一個組合判斷條件,要同時滿足當前條件和傳入的另一個條件。

import java.util.function.Predicate;
public class PredicateExample {
    public static void main(String[] args) {
        Predicate<Integer> isEven = num -> num % 2 == 0;
        Predicate<Integer> isGreaterThan5 = num -> num > 5;
        Predicate<Integer> isEvenAndGreaterThan5 = isEven.and(isGreaterThan5);
        System.out.println(isEvenAndGreaterThan5.test(6)); // 輸出: true
        System.out.println(isEvenAndGreaterThan5.test(3)); // 輸出: false
    }
}

上述示例中,我們創(chuàng)建了兩個 Predicate<Integer> 對象 isEven 和 isGreaterThan5,分別用于判斷數字是否為偶數和是否大于5。然后我們使用 and 方法將這兩個條件進行邏輯與操作,生成了一個新的 Predicate<Integer> 對象 isEvenAndGreaterThan5。通過調用 test 方法,我們可以檢查一個數字是否同時滿足偶數和大于5的條件。

2. or(Predicate<? super T> other)

返回一個組合判斷條件,滿足當前條件或者傳入的另一個條件即可。

import java.util.function.Predicate;
public class PredicateExample {
    public static void main(String[] args) {
        Predicate<Integer> isEven = num -> num % 2 == 0;
        Predicate<Integer> isGreaterThan5 = num -> num > 5;
        Predicate<Integer> isEvenOrGreaterThan5 = isEven.or(isGreaterThan5);
        System.out.println(isEvenOrGreaterThan5.test(4)); // 輸出: true
        System.out.println(isEvenOrGreaterThan5.test(7)); // 輸出: true
        System.out.println(isEvenOrGreaterThan5.test(3)); // 輸出: false
    }
}

在上述示例中,我們使用 or 方法將 isEven 和 isGreaterThan5 這兩個條件進行邏輯或操作,生成了一個新的 Predicate<Integer> 對象 isEvenOrGreaterThan5。通過調用 test 方法,我們可以檢查一個數字是否滿足偶數或者大于5的條件。

3. negate()

返回當前判斷條件的取反條件。

import java.util.function.Predicate;
public class PredicateExample {
    public static void main(String[] args) {
        Predicate<Integer> isEven = num -> num % 2 == 0;
        Predicate<Integer> isNotEven = isEven.negate();
        System.out.println(isNotEven.test(3)); // 輸出: true
        System.out.println(isNotEven.test(4)); // 輸出: false
    }
}

在上述示例中,我們使用 negate 方法對 isEven 條件進行取反操作,生成了一個新的 Predicate<Integer> 對象 isNotEven。通過調用 test 方法,我們可以檢查一個數字是否不滿足偶數的條件。

以上就是Java8函數式接口Predicate用法示例詳解的詳細內容,更多關于Java8函數式接口Predicate的資料請關注腳本之家其它相關文章!

相關文章

  • java 中冒泡、二分、快速算法詳解

    java 中冒泡、二分、快速算法詳解

    這篇文章主要介紹了java 中冒泡、二分、快速算法詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • 淺談JAVA實現(xiàn)選擇排序,插入排序,冒泡排序,以及兩個有序數組的合并

    淺談JAVA實現(xiàn)選擇排序,插入排序,冒泡排序,以及兩個有序數組的合并

    這篇文章主要介紹了JAVA實現(xiàn)選擇排序,插入排序,冒泡排序,以及兩個有序數組的合并,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • mybatis的if判斷不要使用boolean值的說明

    mybatis的if判斷不要使用boolean值的說明

    這篇文章主要介紹了mybatis的if判斷不要使用boolean值的說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 初步了解javafx

    初步了解javafx

    這篇文章主要介紹了初步了解javafx,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • springboot帶有進度條的上傳功能完整實例

    springboot帶有進度條的上傳功能完整實例

    這篇文章主要介紹了springboot帶有進度條的上傳功能,結合完整實例形式分析了springboot帶進度條上傳的原理、實現(xiàn)步驟與相關操作技巧,需要的朋友可以參考下
    2019-11-11
  • Spring中@ConditionalOnProperty注解的作用詳解

    Spring中@ConditionalOnProperty注解的作用詳解

    這篇文章主要介紹了Spring中@ConditionalOnProperty注解的作用詳解,@ConditionalOnProperty注解主要是用來判斷配置文件中的內容來決定配置類是否生效用的,如果條件不匹配,則配置類不生效,需要的朋友可以參考下
    2024-01-01
  • SpringBoot整合JPA詳細代碼實例

    SpringBoot整合JPA詳細代碼實例

    這篇文章主要給大家介紹了關于SpringBoot整合JPA的相關資料,JPA(Java Persistence API)是Sun官方提出的Java持久化規(guī)范,它為Java開發(fā)人員提供了一種對象/關聯(lián)映射工具來管理Java應用中的關系數據,需要的朋友可以參考下
    2024-05-05
  • SpringBoot過濾器如何獲取POST請求的JSON參數

    SpringBoot過濾器如何獲取POST請求的JSON參數

    這篇文章主要介紹了SpringBoot過濾器如何獲取POST請求的JSON參數操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java ArrayList集合詳解(Java動態(tài)數組)

    Java ArrayList集合詳解(Java動態(tài)數組)

    這篇文章主要介紹了Java ArrayList集合詳解(Java動態(tài)數組),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot中各種分頁查詢方式的示例代碼

    SpringBoot中各種分頁查詢方式的示例代碼

    在?Spring?Boot?中,實現(xiàn)分頁查詢有多種方式,下面小編將介紹幾種常見的分頁實現(xiàn)方法,包括?Spring?Data?JPA?分頁、MyBatis?分頁、手動分頁等
    2025-06-06

最新評論

深州市| 鄂托克前旗| 务川| 武山县| 台南县| 无为县| 乐安县| 宁阳县| 旺苍县| 扎兰屯市| 高陵县| 华坪县| 余干县| 清丰县| 株洲市| 屯门区| 古丈县| 行唐县| 绥化市| 大名县| 桃园市| 右玉县| 田林县| 阿鲁科尔沁旗| 固原市| 公安县| 岑巩县| 庆云县| 左权县| 嘉荫县| 白玉县| 开远市| 清河县| 岳阳市| 道孚县| 长顺县| 墨脱县| 利津县| 呼图壁县| 新乐市| 通化市|