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

Java Predicate接口定義詳解

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

Java Predicate接口

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

接口定義

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

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

Predicate接口通常用來:

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

2. 判斷對象是否滿足某條件,作為if語句的判斷條件。

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

4. 自定義復(fù)雜的判斷邏輯作為方法的參數(shù)。Predicate的使用者無需了解判斷邏輯的具體實現(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)用實例說明

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

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

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

一、Predicate<T>

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

1.1 定義方法

/**
     * 接收執(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>固定  定義兩個入?yún)?,并有一個返回值

2.1定義  BiFunction<T,T,R>

/**
     * BiFunction  兩個傳入?yún)?shù),一個返回參數(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);// 處理完這個后還可以 有其它邏輯處理
        Integer handleName= biFunction.apply(firstName,secondName);// 處理完這個后還可以 有其它邏輯處理
        return  handleName+1;
    }

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

public static void main(String[] args) {    //BiFunction  兩個傳入?yún)?shù),一個返回參數(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  接口中僅有一個方法,可隨意定義多個參數(shù)和有無反會值 

3.1 首先定義一個 僅有一個方法的接口, 接口里 可以定義default 已實現(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ù)的幾種情況就說完了,如果有疑問可以評論,大家一起討論一下。

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

相關(guān)文章

  • Spring?Get請求與post請求的實現(xiàn)

    Spring?Get請求與post請求的實現(xiàn)

    在Spring中,GET請求和POST請求是兩種常見的HTTP請求方法,用于與服務(wù)器進(jìn)行交互,本文詳細(xì)的介紹一下Spring?Get請求與post請求的實現(xiàn),感興趣的可以了解一下
    2023-10-10
  • Java簡單使用EasyExcel操作讀寫excel的步驟與要點

    Java簡單使用EasyExcel操作讀寫excel的步驟與要點

    相信現(xiàn)在很多搞后端的同學(xué)大部分做的都是后臺管理系統(tǒng),那么管理系統(tǒng)就肯定免不了Excel的導(dǎo)出導(dǎo)入功能,下面這篇文章主要給大家介紹了關(guān)于Java簡單使用EasyExcel操作讀寫excel的步驟與要點,需要的朋友可以參考下
    2022-09-09
  • 18個Java8日期處理的實踐(太有用了)

    18個Java8日期處理的實踐(太有用了)

    這篇文章主要介紹了18個Java8日期處理的實踐(太有用了),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項目詳細(xì)教程及失敗案例

    IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項目詳細(xì)教程及失敗案例

    IntelliJ?IDEA?2021.3.3是一款集成開發(fā)環(huán)境,用于Java和其他編程語言的開發(fā),下面這篇文章主要給大家介紹了關(guān)于IntelliJ?IDEA社區(qū)版2021.3配置SpringBoot項目詳細(xì)教程及失敗案例的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法

    Spring Cloud-Feign服務(wù)調(diào)用的問題及處理方法

    Feign 是一個聲明式的 REST 客戶端,它用了基于接口的注解方式,很方便實現(xiàn)客戶端配置。接下來通過本文給大家介紹Spring Cloud-Feign服務(wù)調(diào)用,需要的朋友可以參考下
    2021-10-10
  • Java設(shè)計模式之訪問者模式使用場景及代碼示例

    Java設(shè)計模式之訪問者模式使用場景及代碼示例

    這篇文章主要介紹了Java設(shè)計模式之訪問者模式使用場景及代碼示例,小編覺得還是挺不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • vue3使用vue-diff工具來比較數(shù)據(jù)差異

    vue3使用vue-diff工具來比較數(shù)據(jù)差異

    這篇文章主要為大家詳細(xì)介紹了vue3如何使用vue-diff工具來比較數(shù)據(jù)差異,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-11-11
  • 淺析Java的Hibernate框架中的緩存和延遲加載機(jī)制

    淺析Java的Hibernate框架中的緩存和延遲加載機(jī)制

    這篇文章主要介紹了Java的Hibernate框架中的緩存和延遲加載機(jī)制,Hibernate是注明的Java下SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-11-11
  • Mybatis的插件運行原理及如何編寫一個插件

    Mybatis的插件運行原理及如何編寫一個插件

    這篇文章主要介紹了Mybatis的插件運行原理及如何編寫一個插件 ,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java處理不可見特殊字符要點解析

    Java處理不可見特殊字符要點解析

    這篇文章主要介紹了Java處理不可見特殊字符要點解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論