一、简单介绍
话不多说,直接上JDK源码:
static Function identity() {
return t -> t;
}
我们可以看到,Function.identity() 的作用就是 获取一个直接返回入参的函数。
补充:Java8 允许再接口中加入具体方法。接口中的具体方法有两种:default方法
和 static方法
。identify() 就是 Function 接口的一个 static 方法。
二、使用示例
当我们使用 Stream 想要将集合的某一属性(例如手机号)作为 key,对象本身作为 value 时,就可以在 Collectors.toMap()
中配合使用 Function.identity()。
// 查询数据
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);
}
因为这三个方法的入参并不是 Function 类型,而是 ToIntFunciton、ToLongFunction、ToDoubleFunction。
整理完毕,完结撒花~
参考地址:
1.Function.identity()的使用详解,https://blog.csdn.net/qq_41378597/article/details/103942253