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

Java8中關(guān)于Function.identity()的使用

 更新時間:2023年05月31日 09:54:28   作者:ACGkaka_  
這篇文章主要介紹了Java8中關(guān)于Function.identity()的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

關(guān)于Function.identity()的使用

簡單介紹

話不多說,直接上JDK源碼:

static Function identity() {
    return t -> t;
}

我們可以看到,F(xiàn)unction.identity() 的作用就是 獲取一個直接返回入?yún)⒌暮瘮?shù)。

補充:Java8 允許再接口中加入具體方法。接口中的具體方法有兩種:default方法static方法。

identify() 就是 Function 接口的一個 static 方法。

使用示例

當(dāng)我們使用 Stream 想要將集合的某一屬性(例如手機號)作為 key,對象本身作為 value 時,就可以在 Collectors.toMap() 中配合使用 Function.identity()。

// 查詢數(shù)據(jù)
List<UserInfo> list = userInfoMapper.getList();
// 獲取 手機號-UserInfo 映射
Map<String, UserInfo> phoneNumberMap = list.stream().collect(Collectors.toMap(UserInfo::getPhoneNumber(), Function.identity(), (v1, v2) -> v1));

不適用場景

不適用于 mapToInt()、mapToLong()mapToDouble() 等需要進行拆箱操作的場景。

public static void main(String[] args) {
	List<Integer> list = Arrays.asList(1, 2, 3);
	int[] array = list.stream().mapToInt(Function.identity()).toArray();
	System.out.println(array.length);
}

因為這三個方法的入?yún)⒉⒉皇?Function 類型,而是 ToIntFunciton、ToLongFunction、ToDoubleFunction。

Function.identity()的含義

Java 8允許在接口中加入具體方法。

接口中的具體方法有兩種,default方法和static方法.

identity()就是Function接口的一個靜態(tài)方法。

Function.identity()返回一個輸出跟輸入一樣的Lambda表達式對象,等價于形如t -> t形式的Lambda表達式

? ? private static void identity() {
? ? ? ? Stream<String> stream = Stream.of("I", "love", "you", "too");
? ? ? ? Map<String, Integer> map = stream.collect(Collectors.toMap(Function.identity(), String::length));
? ? ? ? System.out.println(map);
? ? }

輸出結(jié)果為:

 {love=4, too=3, I=1, you=3}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 理解Java中的內(nèi)存泄露及解決方法示例

    理解Java中的內(nèi)存泄露及解決方法示例

    這篇文章主要介紹了理解Java中的內(nèi)存泄露及解決方法示例,本文講解了Java內(nèi)存管理機制、Java內(nèi)存泄露、一般情況下內(nèi)存泄漏的避免、復(fù)雜數(shù)據(jù)結(jié)構(gòu)中的內(nèi)存泄露問題等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Spring Boot如何開啟并使用郵件服務(wù)

    Spring Boot如何開啟并使用郵件服務(wù)

    這篇文章主要介紹了Spring Boot如何開啟并使用郵件服務(wù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Java讀取網(wǎng)絡(luò)文件的實例代碼

    Java讀取網(wǎng)絡(luò)文件的實例代碼

    這篇文章主要介紹了Java讀取網(wǎng)絡(luò)文件的實例代碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • java 通過 SmbFile 類操作共享文件夾的示例

    java 通過 SmbFile 類操作共享文件夾的示例

    這篇文章主要介紹了java 通過 SmbFile 類操作共享文件夾,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 詳解MyBatis工作原理

    詳解MyBatis工作原理

    近來想寫一個mybatis的分頁插件,但是在寫插件之前肯定要了解一下mybatis具體的工作原理吧,本文就詳細總結(jié)了MyBatis工作原理,,需要的朋友可以參考下
    2021-05-05
  • 簡單談?wù)凴xJava和多線程并發(fā)

    簡單談?wù)凴xJava和多線程并發(fā)

    認識RxJava已經(jīng)有一段時間了,但是一直沒有機會在項目中嘗試,最近在新的項目里引進了RxJava寫一些事件處理,在review代碼的時候發(fā)現(xiàn)了一些和多線程并發(fā)相關(guān)的問題,所以寫了這篇文章,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • 手把手帶你了解Java-Stream流方法學(xué)習(xí)及總結(jié)

    手把手帶你了解Java-Stream流方法學(xué)習(xí)及總結(jié)

    這篇文章主要介紹了通過實例了解JavaStream流的方法學(xué)習(xí)和總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-08-08
  • SpringBoot中使用MyBatis-Plus實現(xiàn)分頁接口的詳細教程

    SpringBoot中使用MyBatis-Plus實現(xiàn)分頁接口的詳細教程

    MyBatis-Plus是一個MyBatis的增強工具,在MyBatis的基礎(chǔ)上只做增強不做改變,為簡化開發(fā)、提高效率而生,在SpringBoot項目中使用MyBatis-Plus可以大大簡化分頁邏輯的編寫,本文將介紹如何在 SpringBoot項目中使用MyBatis-Plus實現(xiàn)分頁接口
    2024-03-03
  • 簡單了解JAVA SimpleDateFormat yyyy和YYYY的區(qū)別

    簡單了解JAVA SimpleDateFormat yyyy和YYYY的區(qū)別

    這篇文章主要介紹了簡單了解JAVA SimpleDateFormat yyyy和YYYY的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • java后端請求過濾options方式

    java后端請求過濾options方式

    Optional項是一個容器對象,它可以包含非空值,也可以不包含非空值,它用于表示沒有值,而不是使用?null,引入Optional項是為了幫助開發(fā)人員編寫更簡潔、更具表現(xiàn)力的代碼,并避免?NullPointerException
    2024-01-01

最新評論

响水县| 金湖县| 旌德县| 越西县| 麦盖提县| 淳安县| 长岛县| 庄河市| 两当县| 界首市| 车致| 威宁| 华宁县| 荣成市| 福海县| 土默特左旗| 武安市| 新宁县| 繁昌县| 茂名市| 开远市| 永靖县| 扶余县| 仙游县| 郑州市| 博兴县| 南城县| 新营市| 旬阳县| 广德县| 永仁县| 贵港市| 吉林省| 玉田县| 乡城县| 曲麻莱县| 上林县| 铜梁县| 萍乡市| 和田市| 苏尼特左旗|