jdk8 Function
例子 1:
// 定义function
Function<String, String> fun = parm -> {
// 这里是定function中的逻辑
return String.valueOf(parm + "xing");
}; Function<String, String> fun1 = parm -> {
// 这里是定function中的逻辑
return String.valueOf(parm + "sheng");
};
/*
* @param a 第一个执行
* @param fun 第三个
* @param fun1 第二个
* @return
*/
public static String test3(String a, Function<String, String> fun,Function<String, String> fun1) {
return fun.compose(fun1).apply(a);
}
// compose 源码
default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
Objects.requireNonNull(before);
return (V v) -> apply(before.apply(v));
}
System.out.println(test3("zhang",fun,fun1));
// 输出结果 zhangshengxing
// 例子2 list 转map
// 初始化 测试数据
List<User>userList=new ArrayList<>();
userList.add(User.builder().age().name("zhang").build());
userList.add(User.builder().age().name("wang").build());
userList.add(User.builder().age().name("li").build());
userList.add(User.builder().age().name("zhao").build());
userList.add(User.builder().age().name("sun").build());
/**
*
注:Flux 是 reactor 框架中的类,表示0~1个异步序列。Flux.fromIterable(a) 从a中获取一个 Iterable遍历器
从a中获取一个 Iterable遍历器,并使用collectMap(fun,fun1) 函数式方法,block 是堵塞 直到遍历完成
Map<V,R> : V 是map的key, R map的值
例子2 是将list 转为 map<name,age> 形式.
调用 test7(userList,User::getName,User::getAge) 此时,User::getName 是 fun的执行逻辑,User::getAge 是 fun1 的执行逻辑。这两个方法引用
就是从遍历的User中取出name和age 。
Fun<K,V> V 为出参,也就是map 的 key
Fun1<K,R> R为出参,也就是map 的 value
Fun,fun1 必须要和 map<V,R> 对应
* @param a 数据源
* @param fun key 逻辑
* @param fun1 value 逻辑
* @param <K> 数据源类型
* @param <V> key 类型
* @param <R> value 类型
* @return
*/
public static <V,R,K> Map<V,R> test7(List<K> a, Function<K,V> fun, Function<K,R> fun1) {
return Flux.fromIterable(a).collectMap(fun,fun1).block();
}
Map<String,Integer>map=test7(userList,User::getName,User::getAge)
// 输出结果 {"zhang":10,"wang":11,"zhao":13,"li":12,"sun":14}
如果有错误 请大家留言指出
jdk8 Function的更多相关文章
- JDK8 - Function介绍
注:写这个文档只是为了方便加深记忆,加强理解,重点关注两个default方法中泛型[V]. JDK8作为一个还在维护阶段的长期版本,势必会在企业应用中占据相当大的市场份额,所以还是以JDK8作为例子的 ...
- Java函数式接口Function
Function 提供了一个抽象方法 R apply(T t) 接收一个参数 返回 一个值,还有两个默认方法和一个静态方法 compose 是一个嵌套方法,先执行before.apply() 得到运 ...
- Java8新特性Function、BiFunction使用
闲话不多说,直接看代码,注释都写的很清楚了. package com; import java.util.function.BiFunction; import java.util.function. ...
- 你竟然不知道Java中可以用 :: 吗?
简介 Java8中方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方 ...
- 面试官写了个双冒号: : 问我这是什么语法?Java中有这玩意?
一:简洁 方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方法引用, ...
- 通过百度echarts实现数据图表展示功能
现在我们在工作中,在开发中都会或多或少的用到图表统计数据显示给用户.通过图表可以很直观的,直接的将数据呈现出来.这里我就介绍说一下利用百度开源的echarts图表技术实现的具体功能. 1.对于不太理解 ...
- JDK8新特性 -- Function接口: apply,andThen,compose
1 Function<T, R>中的T, R表示接口输入.输出的数据类型. R apply(T t) apply: .例子:func是定义好的Function接口类型的变量,他的输入.输出 ...
- JDK7和JDK8一些重要新特性
jdk7新特性(部分) switch支持字符串 List AutoCloseable接口实现自动关闭,在try()中 新增获取环境信息的工具方法,getJavaHomeDir,getUserHomeD ...
- centos下安装JDK8的方法
判断是否安装 首先,我们得判断机子上是不是安装了jdk,好多人推荐使用java -version命令.我的计算机上使用java -version命令,内容如下: java version " ...
随机推荐
- Nao 类人机器人,Aldebaran Robotics公司
Nao 类人机器人,Aldebaran Robotics 公司,被SOFTBANK 收购,阿里巴巴.富士康参股. https://www.aldebaran.com/en 一家法国的公司. htt ...
- xss编码小结
一.JS编码与HTML编码区分: HTML实体可以使用十进制与十六进制编码:javascript可以使用Unicode与八进制与十六进制进行编码. 二.编码原理区分: 三.编码与非编码 对于JS编码: ...
- SaltStack–Job管理
官方文档:https://docs.saltstack.com/en/2016.11/ref/modules/all/salt.modules.saltutil.html 在SaltStack里面执行 ...
- SqlServer数据库1433端口问题1
在本地使用telnet ip 1433 命令测试数据库1433端口是否打开,总是提示错误,根据网上查找资料总结了如下两点思路供参考,欢迎指正! (1)第一种情况可能是"Telnet客户端& ...
- LeetCode56:Jump Game
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 【Javascript】如何实现点的wave效果 && sinewave效果
参考资料: sinewave效果:http://www.oneapm.com/ci/docker.html?utm_source=BaiduPaid&utm_medium=cpc&ut ...
- minic 类型声明与变量定义句型处理
#include "token_define.h" //这个文件是用来处理句型的,对于算术表达式都是放在前面的那个头文件中来处理 typedef struct _handle_tr ...
- Cocos2d-x设置吞没单击属性来避免精灵重叠被点击后的事件续传
代码如下: Size visibleSize = Director::getInstance()->getVisibleSize(); /* create two sprites which h ...
- java运行环境(JRE)
Java Runtime Environment(JRE) :运行Java程序所必须的环境的集合. JRE的组成: –包括Java 虚拟机 (JVM).Java核心类和支持文件. –不包含开发工具 - ...
- tomcat中server.xml配置详解(转载)(三)
转载自:https://www.cnblogs.com/starhu/p/5599773.html 一. <Engine>元素 每个Service元素只能有一个Engine元素.处理在同 ...