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-Stream流方法學(xué)習(xí)及總結(jié)
這篇文章主要介紹了通過實例了解JavaStream流的方法學(xué)習(xí)和總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2021-08-08
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ū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03

