欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

Predicate<T>接口定義

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

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

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)建了一個用于判斷一個整數(shù)是否為偶數(shù)的 Predicate<Integer> 對象 isEven。通過調(diào)用 test 方法,你可以傳入一個整數(shù),然后得到對應(yīng)的布爾值結(jié)果。

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

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

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

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

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

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

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

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

返回一個組合判斷條件,滿足當(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> 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 這兩個條件進(jìn)行邏輯或操作,生成了一個新的 Predicate<Integer> 對象 isEvenOrGreaterThan5。通過調(diào)用 test 方法,我們可以檢查一個數(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 方法對 isEven 條件進(jìn)行取反操作,生成了一個新的 Predicate<Integer> 對象 isNotEven。通過調(diào)用 test 方法,我們可以檢查一個數(shù)字是否不滿足偶數(shù)的條件。

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

相關(guān)文章

  • Java基于遞歸和循環(huán)兩種方式實(shí)現(xiàn)未知維度集合的笛卡爾積算法示例

    Java基于遞歸和循環(huán)兩種方式實(shí)現(xiàn)未知維度集合的笛卡爾積算法示例

    這篇文章主要介紹了Java基于遞歸和循環(huán)兩種方式實(shí)現(xiàn)未知維度集合的笛卡爾積算法,結(jié)合實(shí)例形式分析了Java使用遞歸與循環(huán)兩種方式實(shí)現(xiàn)未知維度集合的笛卡爾積相關(guān)概念、原理與操作技巧,需要的朋友可以參考下
    2017-12-12
  • Mybatis接口式編程的原理

    Mybatis接口式編程的原理

    mybatis有兩種實(shí)現(xiàn)方式,一種可以通過xml配置文件實(shí)現(xiàn),其二是面向接口編程的實(shí)現(xiàn)。本文重點(diǎn)給大家介紹mybatis接口編程的原理,需要的的朋友參考下
    2017-03-03
  • Dubbo?LoadBalance基于權(quán)重的隨機(jī)負(fù)載均衡算法提高服務(wù)性能

    Dubbo?LoadBalance基于權(quán)重的隨機(jī)負(fù)載均衡算法提高服務(wù)性能

    這篇文章主要為大家介紹了Dubbo?LoadBalance基于權(quán)重的隨機(jī)負(fù)載均衡算法提高服務(wù)性能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-10-10
  • Springboot中@Transactional注解與異常處理機(jī)制方式

    Springboot中@Transactional注解與異常處理機(jī)制方式

    這篇文章主要介紹了Springboot中@Transactional注解與異常處理機(jī)制方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • IDEA中thymeleaf語法沒有提示的問題及解決

    IDEA中thymeleaf語法沒有提示的問題及解決

    這篇文章主要介紹了IDEA中thymeleaf語法沒有提示的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java實(shí)現(xiàn)UDP互發(fā)消息

    Java實(shí)現(xiàn)UDP互發(fā)消息

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)UDP互發(fā)消息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Spring boot跨域設(shè)置實(shí)例詳解

    Spring boot跨域設(shè)置實(shí)例詳解

    這篇文章主要介紹了Spring boot跨域設(shè)置實(shí)例詳解,簡單介紹了跨域的定義,原因,使用場景及解決方案,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Java聊天室之使用Socket實(shí)現(xiàn)傳遞對象

    Java聊天室之使用Socket實(shí)現(xiàn)傳遞對象

    這篇文章主要為大家詳細(xì)介紹了Java簡易聊天室之使用Socket實(shí)現(xiàn)傳遞對象功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以了解一下
    2022-10-10
  • 深入探索Java常量池

    深入探索Java常量池

    這篇文章主要介紹了深入探索Java常量池,涉及靜態(tài)常量池和運(yùn)行時常量池的介紹,常量池的好處,8種基本數(shù)據(jù)類型的包裝類和常量池等相關(guān)內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • idea中引入了gb2312編碼的文件的解決方法

    idea中引入了gb2312編碼的文件的解決方法

    這篇文章主要介紹了idea中引入了gb2312編碼的文件的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論