Java8中关于Function.identity()的使用
作者:ACGkaka_ 发布时间:2021-11-16 16:05:15
标签:Java8,Function,identity()
关于Function.identity()的使用
简单介绍
话不多说,直接上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。
Function.identity()的含义
Java 8允许在接口中加入具体方法。
接口中的具体方法有两种,default方法和static方法.
identity()就是Function接口的一个静态方法。
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);
}
输出结果为:
{love=4, too=3, I=1, you=3}
来源:https://blog.csdn.net/qq_33204709/article/details/128056675


猜你喜欢
- 一、创建一个cs文件,定义Time 对象 public class WebTimer_AutoRepayment{ &n
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 昨天写了一篇Redis布隆过滤器相关的命令的文章,今天来说一说springboot中如何简单在代码中使用布隆过滤器吧。目前市面上也有好几种实
- spring配置不扫描service层原因我将contoller给springmvc进行扫描,然后其余所有交给spring扫描然后发现ser
- 本文实例讲解了java遍历读取xml文件内容的详细代码,分享给大家供大家参考,具体内容如下package test;import java.
- 在用unity进行游戏开发时我们有时需要一些物体在场景切换时不需要被销毁这时我们可以用官方给的DontDestroyOnLoad()方法,这
- 前言大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研、笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点
- 一般情况下在Word中输入的文字都是横向的,今天给大家分享两种方法来设置/更改一个section内的所有文本的方向及部分文本的方向,有兴趣的
- JPA的加锁机制有两种,乐观锁和悲观锁。乐观锁:乐观锁的特点在于认为数据冲突或者更新丢失等情况是很少发生的.当发生的时候,抛出异常和回滚就足
- 在android智能平板设备应用中,一项耗时的操作总要有个提示进度的框来提高用户的操作体验,操作进度提示框就显得很常用了。系统自带的有进度条
- 一、概念和原理RPC(remote procedure call),远程过程调用,是客户端应用和服务端之间的会话。在客户端,它所需要的一些功
- 我们的spring cloud微服务一般是打成jar包发布的,Linux下启动jar包和windows下一样,都是java -jar 包名,
- 一般来说, 泛型的作用就类似一个占位符, 或者说是一个参数, 可以让我们把类型像参数一样进行传递, 尽可能地复用代码。我有个朋友, 在使用的
- 本文实例为大家分享了Android实现蒙板效果的相关代码,供大家参考,具体内容如下1、不保留标题栏蒙板的实现效果:原理:1、弹窗时,设置背景
- 一般的接口实现多态定义接口 interface Ipeople { void say(); }定义实现的类 public cla
- 本文为大家分享了Android Studio使用USB真机调试的具体方法,供大家参考,具体内容如下以小米4为例,先将手机通过USB连接电脑,
- 实例如下:package com.ljq.util;import java.beans.BeanInfo;import java.beans
- 一、Filefile是文件和目录路径名的抽象表示1.1 File的用法用法:File file = new File("路径名&q
- 前言Spring框架中的BeanFactory接口和FactoryBean接口因为名称相似,老是容易搞混淆,而且也是面试过程中经常会碰到的一
- 1.会话会话: 用户打开了一个浏览器,点击了很多超链接,访问多个web次元,关闭浏览器,这个过程可以称之为会话有状态会话: 带有访问记录的会