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

Java Predicate接口定義詳解

 更新時(shí)間:2025年04月09日 09:56:02   作者:思維的深度  
Predicate是Java中的一個(gè)函數(shù)式接口,它代表一個(gè)判斷邏輯,接收一個(gè)輸入?yún)?shù),返回一個(gè)布爾值,這篇文章主要介紹了Java Predicate接口的定義及示例代碼,需要的朋友可以參考下

Java Predicate接口

Predicate是Java中的一個(gè)函數(shù)式接口,它代表一個(gè)判斷邏輯,接收一個(gè)輸入?yún)?shù),返回一個(gè)布爾值。

接口定義

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

它接收泛型T的輸入,返回true或false。

Predicate接口通常用來(lái):

1. 過(guò)濾集合中的元素。像List#removeIf()、Stream#filter()等方法接收Predicate來(lái)過(guò)濾元素。

2. 判斷對(duì)象是否滿足某條件,作為if語(yǔ)句的判斷條件。

3. 驗(yàn)證對(duì)象的一些屬性或狀態(tài)是否正確。

4. 自定義復(fù)雜的判斷邏輯作為方法的參數(shù)。Predicate的使用者無(wú)需了解判斷邏輯的具體實(shí)現(xiàn)細(xì)節(jié)。

示例代碼:

// Remove persons older than 18   
list.removeIf(person -> person.age > 18);  
// Check if "Hello" starts with "H"
if (startsWith("H")) { ... } 
Predicate<String> startsWithH = s -> s.startsWith("H");
// Check if person has empty name
Predicate<Person> nameNotEmpty = person -> !person.name.isEmpty(); 
// Use Predicate to filter candidates 
selectCandidates(candidates, candidate -> candidate.age > 30 && 
                                       candidate.skills.contains("Java"));

擴(kuò)展:Java lamda表達(dá)式 Predicate<T>、BiFunction<T,T,R>、FunctionalInterface 應(yīng)用實(shí)例說(shuō)明

Java lamda表達(dá)式 Predicate<T>、BiFunction<T,T,R>、FunctionalInterface 應(yīng)用實(shí)例說(shuō)明

使用相對(duì)應(yīng)的 函數(shù)式接口,可使編寫程序在某些時(shí)候變得更高雅和靈活,下面對(duì)各種情況進(jìn)行說(shuō)明

ps:核心原理就是 將方法作為一個(gè)參數(shù)傳到另一個(gè)方法,使該方法處理內(nèi)容更豐富和靈活,在C#概念中稱為 委托。

一、Predicate<T>

特點(diǎn):只能接收一個(gè)參數(shù),返回值固定是 boolean值

1.1 定義方法

/**
     * 接收?qǐng)?zhí)行 predicate 表達(dá)式
     * @param predicateLamda
     * @param str
     * @return
     */
    public  static boolean checkString(Predicate<String> predicateLamda,String str){
        return predicateLamda.test(str);
    }

1.2 使用定義 Predicate<String> 方法

public static void main(String[] args) {
        // predicate 表達(dá)式
       boolean result1= checkString(str->str.equals("liyanbo"), "woshi liyanbo");
        System.out.println("result1 = " + result1);
}

二、BiFunction<T,T,R>固定  定義兩個(gè)入?yún)?,并有一個(gè)返回值

2.1定義  BiFunction<T,T,R>

/**
     * BiFunction  兩個(gè)傳入?yún)?shù),一個(gè)返回參數(shù)
     * @param biFunction
     * @param firstName
     * @param secondName
     * @return
     */
    public  static  Integer getBiFunction(BiFunction<String,String,Integer> biFunction,String firstName,String secondName){
        //String handleName= biFunction.apply(firstName,secondName);// 處理完這個(gè)后還可以 有其它邏輯處理
        Integer handleName= biFunction.apply(firstName,secondName);// 處理完這個(gè)后還可以 有其它邏輯處理
        return  handleName+1;
    }

2.2 使用定義BiFunction<T,T,R>

public static void main(String[] args) {    //BiFunction  兩個(gè)傳入?yún)?shù),一個(gè)返回參數(shù)
//        BiFunction<String, String, String> biFunction = (firstName, lastName) -> firstName + " " + lastName;
//        String fullName = biFunction.apply("Bill","John");
        Integer fullName=getBiFunction((firstName, lastName) -> (firstName + " " + lastName).length(),"li","yanbo");
        System.out.println(fullName);     
    }

三、FunctionalInterface  接口中僅有一個(gè)方法,可隨意定義多個(gè)參數(shù)和有無(wú)反會(huì)值 

3.1 首先定義一個(gè) 僅有一個(gè)方法的接口, 接口里 可以定義default 已實(shí)現(xiàn)的方法

package com.multiplethread.multiplethread;
@FunctionalInterface
public interface FunctionInterfaceRealize {
    public  String  getHandleResult(Integer l,Integer p);
}

3.2 定義使用 該FunctionInterface 的方法備后續(xù)使用 類似 1.1和2.1

/**
     * 調(diào)用 functionInterface 函數(shù)式接口
     * @param functionInterfaceRealize
     * @param arg1
     * @param arg2
     * @return
     */
    public static  String getFunctionInterFace(FunctionInterfaceRealize functionInterfaceRealize,Integer arg1,Integer arg2){
         String handleResult= functionInterfaceRealize.getHandleResult(arg1,arg2);
         handleResult=handleResult+"123";
         return  handleResult;
    }

3.3 使用 已定義可以將方法作為參數(shù)的方法

public static void main(String[] args) {     
        // 定義 functionInterFace ,并做相應(yīng)的邏輯處理
        String handleResult=getFunctionInterFace((x,y)->(x.toString()+y.toString()),1,2);
    }

到此將 方法作為參數(shù)的幾種情況就說(shuō)完了,如果有疑問(wèn)可以評(píng)論,大家一起討論一下。

到此這篇關(guān)于Java Predicate接口的文章就介紹到這了,更多相關(guān)java Predicate接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)雪花算法的原理

    Java實(shí)現(xiàn)雪花算法的原理

    這篇文章主要介紹了Java實(shí)現(xiàn)雪花算法的原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 利用?SpringBoot?在?ES?中實(shí)現(xiàn)類似連表查詢功能

    利用?SpringBoot?在?ES?中實(shí)現(xiàn)類似連表查詢功能

    這篇文章主要介紹了如何利用?SpringBoot?在?ES?中實(shí)現(xiàn)類似連表的查詢功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Java多線程工具CompletableFuture詳解

    Java多線程工具CompletableFuture詳解

    這篇文章主要介紹了Java多線程工具CompletableFuture詳解,CompletableFuture?是?java?1.8?追加的新特性,通俗的話來(lái)說(shuō),是一個(gè)函數(shù)式的,用于控制多任務(wù)同步、異步組合操作的工具,需要的朋友可以參考下
    2024-01-01
  • 查看本地啟動(dòng)SpringBoot的本地端口號(hào)的幾種方式

    查看本地啟動(dòng)SpringBoot的本地端口號(hào)的幾種方式

    這篇文章主要介紹了查看本地啟動(dòng)SpringBoot的本地端口號(hào)的幾種方式,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-10-10
  • org.springframework.web.client.ResourceAccessException資源訪問(wèn)錯(cuò)誤的解決方法

    org.springframework.web.client.ResourceAccessException資源訪問(wèn)錯(cuò)誤

    本文主要介紹了org.springframework.web.client.ResourceAccessException資源訪問(wèn)錯(cuò)誤的解決方法,首先需要分析異常的詳細(xì)信息,以確定具體的錯(cuò)誤原因,感興趣的可以了解一下
    2024-05-05
  • 一文探索Apache HttpClient如何設(shè)定超時(shí)時(shí)間

    一文探索Apache HttpClient如何設(shè)定超時(shí)時(shí)間

    Apache HttpClient是一個(gè)流行的Java庫(kù),用于發(fā)送HTTP請(qǐng)求,這篇文章主要為大家介紹了Apache HttpClient如何設(shè)定超時(shí)時(shí)間,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-10-10
  • Java實(shí)現(xiàn)經(jīng)典游戲俄羅斯方塊(升級(jí)版)的示例代碼

    Java實(shí)現(xiàn)經(jīng)典游戲俄羅斯方塊(升級(jí)版)的示例代碼

    俄羅斯方塊是一款風(fēng)靡全球,從一開(kāi)始到現(xiàn)在都一直經(jīng)久不衰的電腦、手機(jī)、掌上游戲機(jī)產(chǎn)品,是一款游戲規(guī)則簡(jiǎn)單,但又不缺乏樂(lè)趣的簡(jiǎn)單經(jīng)典小游戲。本文將用Java語(yǔ)言實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下
    2022-09-09
  • java中Javers?比較兩個(gè)類的差異

    java中Javers?比較兩個(gè)類的差異

    本文主要介紹了Javers?比較兩個(gè)類的差異,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • SpringBoot鏈路追蹤skyworking的接入方法

    SpringBoot鏈路追蹤skyworking的接入方法

    在SpringBoot項(xiàng)目中引入SkyWalking進(jìn)行鏈路追蹤,需要下載探針jar包,配置logback.xml,設(shè)置啟動(dòng)變量,以實(shí)現(xiàn)服務(wù)調(diào)用監(jiān)控和錯(cuò)誤預(yù)警,本文給大家介紹SpringBoot鏈路追蹤skyworking的接入方法,感興趣的朋友一起看看吧
    2024-10-10
  • Spring Boot3 集成 Spring AI 實(shí)現(xiàn) Advisor 增強(qiáng)機(jī)制的完整流程

    Spring Boot3 集成 Spring AI 實(shí)現(xiàn) A

    Spring AI的Advisor API是一種聲明式的攔截機(jī)制,借鑒了 Spring AOP 的設(shè)計(jì)理念,允許開(kāi)發(fā)者在AI交互的生命周期關(guān)鍵節(jié)點(diǎn)插入自定義邏輯,本文全面介紹了Spring Boot集成Spring AI 1.0.0 實(shí)現(xiàn) Advisor 增強(qiáng)機(jī)制的完整流程,感興趣的朋友跟隨小編一起看看吧
    2026-03-03

最新評(píng)論

荣成市| 双桥区| 靖远县| 施秉县| 资阳市| 大竹县| 罗甸县| 保靖县| 石首市| 遂川县| 舟山市| 岳阳县| 东丰县| 博客| 报价| 达州市| 宁阳县| 疏勒县| 卢氏县| 赞皇县| 宾阳县| 秦皇岛市| 肃宁县| 临高县| 义乌市| 宝鸡市| 石狮市| 崇左市| 怀安县| 仙桃市| 繁峙县| 红安县| 甘德县| 福清市| 铜川市| 廊坊市| 磐安县| 博爱县| 喜德县| 安多县| 新竹市|