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(10).name("zhang").build()); userList.add(User.builder().age(11).name("wang").build()); userList.add(User.builder().age(12).name("li").build()); userList.add(User.builder().age(13).name("zhao").build()); userList.add(User.builder().age(14).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}

 

如果有错误 请大家留言指出

转载于:https://www.cnblogs.com/zhangXingSheng/p/10743465.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

std::unique_ptr<T>与boost::scoped_ptr<T>的特殊性

std::unique_ptr<T>与boost::scoped_ptr<T>的底层实现原理类型&#xff0c;不清楚是谁"借鉴"另一个的实现的&#xff0c;但这不重要。 std::unique_ptr<T>与boost::scoped_ptr<T> 都禁用了拷贝构造和赋值函数&#xff0c;所以不能作为STL容…

winform Outlookbar

控件提供了一种类似Outlook方式的工具条&#xff0c;用来切换各种业务窗口&#xff0c;用上这个控件&#xff0c;肯定为您的程序增色不少。这个控件结合上面介绍的布局控件"WeifenLuo.WinFormsUI.Docking"&#xff08;具体见文章WinForm界面开发之布局控件"Weif…

[leetcode](4.21)4. 有效子数组的数目

给定一个整数数组 A&#xff0c;返回满足下面条件的 非空、连续 子数组的数目&#xff1a; 子数组中&#xff0c;最左侧的元素不大于其他元素。 示例 1&#xff1a; 输入&#xff1a;[1,4,2,5,3] 输出&#xff1a;11 解释&#xff1a;有 11 个有效子数组&#xff0c;分别是&…

Android SDK 2.2 开发环境安装

本文描述 Android SDK 安装过程&#xff0c;包括&#xff1a;Android SDK 2.2, Eclipse 3.5.2(galileo), 和 Andoid Development Tools (ADT) Plugin。一个前提是用户已经安装了 JDK5.0 或 jdk 6.0。并且在系统环境变量设置了 Path 包含 JDK 的 bin 目录。编辑本段 回目录安装 …

std::make_shared<T>/std::make_unique<T>与std::shared_ptr<T>/std::unique_ptr<T>的区别与联系

(1)、std::make_shared<T>与std::make_unique<T>相对于std::shared_ptr<T>/std::unique_ptr<T>只有一次内存的分配 (2)、std::make_shared<T>与std::make_unique<T>不会抛出异常&#xff1b; 此外&#xff0c;std::make_shared<T>是…

Hibernate实体JSONObject化时遇到的问题

2019独角兽企业重金招聘Python工程师标准>>> ###在对Hibernate持久化的对象进行JSON化的时候&#xff0c;出现了几个问题。 第一个是因为在对象中有相互引用&#xff0c;如A->B,B.set->A这样的一对多关系&#xff0c;使得在遍历构造JSON时&#xff0c;产生了死…

截取中英文字符串

代码 functionsubstr(str, len){if(!str ||!len) { return; }//预期计数&#xff1a;中文2字节&#xff0c;英文1字节vara 0;//循环计数vari 0;//临时字串vartemp ;for(i0;i<str.length;i){if(str.charCodeAt(i)>255){//按照预期计数增加2a2; }else{ a; }//如果增加计数…

mysql概述

MySql大致分为三层结构&#xff1a; 第一层&#xff1a;客户端并非MySql所独有&#xff0c;例如&#xff1a;连接处理、授权认证、安全等功能均在这一层处理 第二层&#xff1a;核心服务包括查询解析、分析、优化、缓存、内置函数(比如 : 时间、数学、加密等函数)&#xff0c;所…

mysql 8.0 一条insert语句的具体执行流程分析(二)

继续上一篇文章&#xff1a;mysql 8.0 一条insert语句的具体执行流程分析(一)_一缕阳光的博客-CSDN博客 由于最近换工作一直在试用期内&#xff0c;在拼命的学习、总结中&#xff0c;因此没有时间写文章&#xff0c;今天转正了腾出来时间继续写下一篇文章。mysql 8.0 一条inse…

关于C#序列化结果的长度获取

关于C#序列化的文章真的是好多&#xff0c;但是内容大致一样&#xff0c;主要分四类&#xff1a; BinarySerialize SoapSerialize XmlSerialize JSON.Net和DataContractJsonSerializer最近的一个项目需要使用Socket进行通信&#xff0c;所以必然涉及序列化的问题。使用BinarySe…

团队项目-需求分析

团队作业-需求分析 这个作业属于哪个课程https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2这个作业的要求在哪里https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3105团队名称快乐小分队这个作业的目标完成英语学习app&#xff0c;尽量…

REMarkerClusterer

2019独角兽企业重金招聘Python工程师标准>>> REMarkerClusterer 创建和管理大量的标记每个缩放级别的集群。REMarkerClusterer 受苹果的照片应用程序在iPhone上的启发&#xff0c;模仿它的行为提供分组和取消分组集群的动画。 转载:http://www.adobex.com/ios/sourc…

mysql 8.0 一条insert语句的具体执行流程分析(三)

代码版本&#xff1a;mysql 8.0.22 编程语言&#xff1a;c && c11 && c14 && c17 上一篇文章&#xff1a;mysql 8.0 一条insert语句的具体执行流程分析(二)_一缕阳光的博客-CSDN博客 主要介绍了存储引擎部分&#xff0c;这个章节主要介绍insert一条…

corosync+openais+pacemaker+web

corosync 和openais 各自都能实现群集功能&#xff0c;但是功能比较简单&#xff0c;要想实现功能齐全、复杂的群集&#xff0c;需要将两者结合起来.corosync 和openais 各自都能实现群集功能&#xff0c;但是功能比较简单&#xff0c;要想实现功能齐全、复杂的群集&#xff0c…

Asp.net MVC 3实例学习之ExtShop(五)——产品详细页

在产品详细页需要使用到tab控件&#xff0c;在jquery的ui包已包含改控件&#xff0c;因而将相应文件链接加到母版页就可以了。 打开“ProductController”文件&#xff0c;在里面添加一个Details操作&#xff0c;代码如下&#xff1a; 1 public ActionResu…

解构领域驱动设计(三):领域驱动设计

在上一部分&#xff0c;分层架构的目的是为了将业务规则剥离出来在单独的领域层中进行实现。再回顾一下领域驱动设计的分层中应用层代码的实现。 Override public void pay(int orderId, float amount) {DesignerOrder order designerOrderRepository.selectByKey(orderId); …

MySQL中update一条record的过程

在MySQL中&#xff0c;update是原地更新数据&#xff0c;原地更新数据&#xff0c;原地更新数据。重要的事情说3遍。这是不同于PGSQL的。 update的具体过程是&#xff1a; (1)、先对该条record对应的索引加X锁 (2)、将修改后的数据写入到redo.log中 (3)、将修改之前的数据备…

[AX]AX2012 AIF(二):文档服务编程模型

一个完整的文档服务包含很多对象&#xff0c;以Customer服务为例&#xff0c;它包含以下对象&#xff1a; 查询AxdCustomer&#xff1a;这个query的顶层表为CustTable&#xff0c;其下Datasource包含表DirParty&#xff0c;DirParty下的Datasource则再包含表DirPersonName、表D…

安装sql server 2000时,提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作,需重起...

打开注册表编辑器&#xff0c;在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations项目&#xff0c;并删除它。这样就可以清除安装暂挂项目。 方法二&#xff1a; 1、添加/删除程序中彻底删除sql server。 2、将没有删除…

iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方...

https://www.cnblogs.com/yk123/p/9340268.html // 加载自定义名称为Resources.bundle中对应images文件夹中的图片// 思路:从mainbundle中获取resources.bundleNSString *strResourcesBundle [[NSBundle mainBundle] pathForResource:”Resources” ofType:”bundle”];// 找到…