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

JAVA中的函數(shù)式接口Function和BiFunction詳解

 更新時(shí)間:2024年01月04日 10:02:33   作者:時(shí)間不會(huì)賴著不走  
這篇文章主要介紹了JAVA中的函數(shù)式接口Function和BiFunction詳解,JDK的函數(shù)式接口都加上了@FunctionalInterface注解進(jìn)行標(biāo)識(shí),但是無論是否加上該注解只要接口中只有一個(gè)抽象方法,都是函數(shù)式接口,需要的朋友可以參考下

函數(shù)式接口

只有一個(gè)抽象方法的接口我們稱之為函數(shù)接口。 ?

JDK的函數(shù)式接口都加上了@FunctionalInterface注解進(jìn)行標(biāo)識(shí)。但是無論是否加上該注解只要接口中只有一個(gè)抽象方法,都是函數(shù)式接口。

為什么要用函數(shù)式接口

  • 代碼簡潔,開發(fā)快速
  • 可以使用極簡的lambda表達(dá)式實(shí)例化接口

其實(shí)就是為了適應(yīng)轉(zhuǎn)化成lambda表達(dá)式,寫成具體的方法也可以,但是就是多要多寫一些代碼,引入函數(shù)式接口就是為了配合轉(zhuǎn)化成極簡lambda表達(dá)式簡化代碼

怎么使用Function ,BiFunction計(jì)算轉(zhuǎn)換接口

Function

舉例如下:一個(gè)測(cè)試字符串長度的例子

沒轉(zhuǎn)化之前

public class function {
    static Function<String, Integer> strLen = new Function<String, Integer>() {
        @Override
        public Integer apply(String s) {
            int length = s.length();
            return length;
        }
    };
    public static void main(String[] args) {
        System.out.println("Function 示例, 字符串長度: " + strLen.apply("Hello"));
    }
}

轉(zhuǎn)化之后

public class function {
    static Function<String, Integer> strLen = s -> {
        int length = s.length();
        return length;
    };
    public static void main(String[] args) {
        System.out.println("Function 示例, 字符串長度: " + strLen.apply("Hello"));
    }
}

可以再簡化

public class function {
    static Function<String, Integer> strLen = String::length;
    public static void main(String[] args) {
        System.out.println("Function 示例, 字符串長度: " + strLen.apply("Hello"));
    }
}

測(cè)試結(jié)果:

在這里插入圖片描述

上面這個(gè)例子其實(shí)沒有必要?jiǎng)?chuàng)建一個(gè)接口來返回字符串的長度,這是簡化操作,例如下面想將一個(gè)過濾桶中的數(shù)據(jù)進(jìn)行轉(zhuǎn)化封裝,那么你大可寫一個(gè)轉(zhuǎn)化函數(shù),加上參數(shù)和返回值,也可以利用JAVA8中封裝好的函數(shù)式計(jì)算轉(zhuǎn)換接口Function進(jìn)行編寫,如下

private Function<Filters , LinkedHashMap<String, Long>>  RESULT_CONVENT = new Function<Filters, LinkedHashMap<String, Long>>() {
        @Override
        public LinkedHashMap<String, Long> apply(Filters term) {
            LinkedHashMap<String, Long> result = new LinkedHashMap<>();
            for (Filters.Bucket temp : term.getBuckets()) {
                MultiBucketsAggregation statisticTimeTerm = temp.getAggregations().get("Time");
                for (MultiBucketsAggregation.Bucket timeTemp : statisticTimeTerm.getBuckets()) {
                    result.put(timeTemp.getKeyAsString(), timeTemp.getDocCount());
                }
            }
            return result;
        }
    };

轉(zhuǎn)化成lambda表達(dá)式后

    private Function<Filters , LinkedHashMap<String, Long>>  RESULT_CONVENT = term -> {
        LinkedHashMap<String, Long> result = new LinkedHashMap<>();
        for (Filters.Bucket temp : term.getBuckets()) {
            MultiBucketsAggregation statisticTimeTerm = temp.getAggregations().get("Time");
            for (MultiBucketsAggregation.Bucket timeTemp : statisticTimeTerm.getBuckets()) {
                result.put(timeTemp.getKeyAsString(), timeTemp.getDocCount());
            }
        }
        return result;
    };

這樣寫的目的就是轉(zhuǎn)化成lambda表達(dá)式,轉(zhuǎn)化為函數(shù)式編程思想,熟悉函數(shù)式接口 同樣的下面的BiFunction功能更加強(qiáng)大,可以兩個(gè)參數(shù)的計(jì)算轉(zhuǎn)換

BiFunction兩個(gè)參數(shù)的計(jì)算轉(zhuǎn)換

public class function {
    static BiFunction<String, Integer, Boolean> expectLength = (s, num) -> s.length() == num;
    public static void main(String[] args) {
        System.out.print("BiFunction 示例, 字符串長度是否符合預(yù)期? " + expectLength.apply("21yi", 4));
    }
}

測(cè)試結(jié)果

在這里插入圖片描述

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

相關(guān)文章

  • Spring Boot2.0 @ConfigurationProperties使用詳解

    Spring Boot2.0 @ConfigurationProperties使用詳解

    這篇文章主要介紹了Spring Boot2.0 @ConfigurationProperties使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • java String類常量池分析及

    java String類常量池分析及"equals"和"==”區(qū)別詳細(xì)介紹

    這篇文章主要介紹了java String類常量池分析及"equals"和"==”區(qū)別詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹

    關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹

    這篇文章主要是關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹,并給出其對(duì)應(yīng)的代碼,需要的朋友可以參考下
    2015-08-08
  • 一文徹底理清SpringBoot CURD處理邏輯、順序

    一文徹底理清SpringBoot CURD處理邏輯、順序

    這篇文章主要給大家介紹了關(guān)于如何一文徹底理清SpringBoot CURD處理邏輯、順序的相關(guān)資料,CURD是一個(gè)數(shù)據(jù)庫技術(shù)中的縮寫詞,一般的項(xiàng)目開發(fā)的各種參數(shù)的基本功能都是CURD,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Spring框架的JdbcTemplate使用

    Spring框架的JdbcTemplate使用

    它是 Spring 框架中提供的一個(gè)對(duì)象,是對(duì)原始 Jdbc API 對(duì)象的簡單封裝。本文就來介紹一下Spring框架的JdbcTemplate使用,感興趣的可以了解一下
    2021-09-09
  • idea中java及java web項(xiàng)目的常見問題及解決

    idea中java及java web項(xiàng)目的常見問題及解決

    在IDEA中處理亂碼問題主要涉及四個(gè)方面:文件編碼設(shè)置為UTF-8、編輯器默認(rèn)編碼調(diào)整、Tomcat運(yùn)行配置編碼設(shè)置以及解決cmd中的亂碼,此外,詳細(xì)介紹了在IDEA中創(chuàng)建Web項(xiàng)目的步驟,包括新建Java工程、添加Web框架支持、添加Tomcat依賴庫
    2024-09-09
  • Spring?Boot日志打印配置詳細(xì)介紹

    Spring?Boot日志打印配置詳細(xì)介紹

    本文詳細(xì)介紹了如何在SpringBoot項(xiàng)目中進(jìn)行日志配置,包括日志框架概述、日志級(jí)別配置、日志文件輸出與滾動(dòng)配置、電商交易系統(tǒng)中的應(yīng)用示例以及常見日志問題及解決方案,通過靈活的日志配置,開發(fā)者可以更好地管理和調(diào)試軟件系統(tǒng),需要的朋友可以參考下
    2024-11-11
  • 百度Java面試題 前200頁精選(上)

    百度Java面試題 前200頁精選(上)

    這篇文章主要為大家分享了Java面試資源,百度“Java面試題”前200頁都在這里了,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Windows?10卸載JDK1.8超詳細(xì)圖文教程

    Windows?10卸載JDK1.8超詳細(xì)圖文教程

    這篇文章主要介紹了Windows?10卸載JDK1.8超詳細(xì)圖文教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Spring Boot + Redisson 分布式鎖示例案例

    Spring Boot + Redisson 分布式鎖示例案例

    本文提供了一個(gè)完整的SpringBoot+Redisson分布式鎖示例項(xiàng)目結(jié)構(gòu),包括Maven依賴、配置文件、Redisson配置類、業(yè)務(wù)服務(wù)層和控制器等,通過這個(gè)示例,可以實(shí)現(xiàn)分布式環(huán)境下的并發(fā)控制,感興趣的朋友一起看看吧
    2025-12-12

最新評(píng)論

淮滨县| 建平县| 中超| 镇赉县| 大宁县| 呼和浩特市| 正定县| 安化县| 丹巴县| 那曲县| 南木林县| 东方市| 潞城市| 阿巴嘎旗| 治县。| 普兰店市| 扶风县| 康乐县| 泾源县| 浦县| 专栏| 辉南县| 永修县| 年辖:市辖区| 神木县| 朔州市| 临邑县| 博兴县| 长兴县| 承德县| 安徽省| 江安县| 三明市| 沾益县| 宝应县| 修水县| 东港市| 琼结县| 中西区| 北碚区| 绥化市|