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

Java8函數(shù)式接口Predicate用法示例詳解

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

Java8函數(shù)式接口Predicate用法

在Java 8中,Predicate<T>是一個(gè)函數(shù)式接口,用于對(duì)某個(gè)類型的對(duì)象進(jìn)行條件判斷,返回一個(gè)布爾值。

Predicate<T>接口定義

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

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

Predicate<T> 簡(jiǎn)單示例

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

上述示例創(chuàng)建了一個(gè)用于判斷一個(gè)整數(shù)是否為偶數(shù)的 Predicate<Integer> 對(duì)象 isEven。通過(guò)調(diào)用 test 方法,你可以傳入一個(gè)整數(shù),然后得到對(duì)應(yīng)的布爾值結(jié)果。

Predicate<T> 接口還可以與其他函數(shù)式接口結(jié)合使用,如 filter 方法配合 Stream 使用,進(jìn)行元素的過(guò)濾操作。

Predicate<T> 元素過(guò)濾

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 方法結(jié)合 Predicate<T> 對(duì)流中的元素進(jìn)行過(guò)濾,只保留了偶數(shù)。最終將結(jié)果收集到一個(gè)新的列表中。

Predicate<T> 接口提供默認(rèn)方法

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

以下是三個(gè)默認(rèn)方法的說(shuō)明和示例:

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

返回一個(gè)組合判斷條件,要同時(shí)滿足當(dāng)前條件和傳入的另一個(gè)條件。

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)建了兩個(gè) Predicate<Integer> 對(duì)象 isEven 和 isGreaterThan5,分別用于判斷數(shù)字是否為偶數(shù)和是否大于5。然后我們使用 and 方法將這兩個(gè)條件進(jìn)行邏輯與操作,生成了一個(gè)新的 Predicate<Integer> 對(duì)象 isEvenAndGreaterThan5。通過(guò)調(diào)用 test 方法,我們可以檢查一個(gè)數(shù)字是否同時(shí)滿足偶數(shù)和大于5的條件。

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

返回一個(gè)組合判斷條件,滿足當(dāng)前條件或者傳入的另一個(gè)條件即可。

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 這兩個(gè)條件進(jìn)行邏輯或操作,生成了一個(gè)新的 Predicate<Integer> 對(duì)象 isEvenOrGreaterThan5。通過(guò)調(diào)用 test 方法,我們可以檢查一個(gè)數(shù)字是否滿足偶數(shù)或者大于5的條件。

3. negate()

返回當(dāng)前判斷條件的取反條件。

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 方法對(duì) isEven 條件進(jìn)行取反操作,生成了一個(gè)新的 Predicate<Integer> 對(duì)象 isNotEven。通過(guò)調(diào)用 test 方法,我們可以檢查一個(gè)數(shù)字是否不滿足偶數(shù)的條件。

以上就是Java8函數(shù)式接口Predicate用法示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Java8函數(shù)式接口Predicate的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

    mybatis的if判斷不要使用boolean值的說(shuō)明

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

    初步了解javafx

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

    springboot帶有進(jìn)度條的上傳功能完整實(shí)例

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

    Spring中@ConditionalOnProperty注解的作用詳解

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

    SpringBoot整合JPA詳細(xì)代碼實(shí)例

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

    SpringBoot過(guò)濾器如何獲取POST請(qǐng)求的JSON參數(shù)

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

    Java ArrayList集合詳解(Java動(dòng)態(tài)數(shù)組)

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

    SpringBoot中各種分頁(yè)查詢方式的示例代碼

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

最新評(píng)論

始兴县| 即墨市| 万安县| 伊通| 察隅县| 南京市| 剑阁县| 麻栗坡县| 宝清县| 烟台市| 塔河县| 二手房| 志丹县| 修文县| 临清市| 西乌珠穆沁旗| 株洲市| 防城港市| 巴东县| 五台县| 应用必备| 云林县| 大化| 扶风县| 武鸣县| 固原市| 富宁县| 赤壁市| 南昌市| 德钦县| 砀山县| 拉孜县| 桐柏县| 穆棱市| 吉首市| 大埔区| 信阳市| 秦皇岛市| 祁阳县| 东台市| 华坪县|