JDK8自带的函数式接口Function有两个默认方法andThen和compose,它们都返回Function的一个实例,可以用这两个方法把Function接口所代表的的Lambda表达式复合起来。

先看个简单的例子:

Function<Integer, Integer> f = x -> x + 1;
Function<Integer, Integer> g = x -> x * 2;
// andThe用法
Function<Integer, Integer> h = f.andThen(g);
// (2+1)*2 = 6
System.out.println(h.apply(2));
// (5+1)*2=12
System.out.println(h.apply(5)); //compose用法
Function<Integer, Integer> p = f.compose(g);
//(3*2)+1=7
System.out.println(p.apply(3));
//(9*2)+1=19
System.out.println(p.apply(9));

简单的应用

package org.burning.sport.javase.lambda.chapter3.function;

public class Letter {
public static String addHeader(String text) {
return "From ZhejiangHZ " + text;
} public static String addFooter(String text) {
return "Sign YingjieLi " + text;
} public static String checkSpell(String text) {
return text.replace("li", "zhang");
}
}
/**
* 实际的应用一下
*/
Function<String, String> header = Letter::addHeader;
Function<String, String> pipeLine = header.andThen(Letter::addFooter).andThen(Letter::checkSpell);
System.out.println(pipeLine.apply("wangying")); Function<String, String> pipeLine2 = header.compose(Letter::addFooter);
System.out.println(pipeLine2.apply("jiahao"));

https://gitee.com/play-happy/base-project

参考:

【1】《Java8实战》

Java8-函数复合用法的更多相关文章

  1. Hive 中的复合数据结构简介以及一些函数的用法说明

    参见下面这篇博客: Hive 中的复合数据结构简介以及一些函数的用法说明

  2. 有关日期的函数操作用法总结,to_date(),trunc(),add_months();

    相关知识链接: Oracle trunc()函数的用法 oracle add_months函数 Oracle日期格式转换,tochar(),todate() №2:取得当前日期是一个星期中的第几天,注 ...

  3. Oracle to_date()函数的用法

    Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...

  4. js中bind、call、apply函数的用法

    最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站.但 ...

  5. Oracle trunc()函数的用法

    Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...

  6. freemarker内置函数和用法

    原文链接:http://www.iteye.com/topic/908500 在我们应用Freemarker 过程中,经常会操作例如字符串,数字,集合等,却不清楚Freemrker 有没有类似于Jav ...

  7. matlab中patch函数的用法

    http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...

  8. JavaScript中常见的数组操作函数及用法

    JavaScript中常见的数组操作函数及用法 昨天写了个帖子,汇总了下常见的JavaScript中的字符串操作函数及用法.今天正好有时间,也去把JavaScript中常见的数组操作函数及用法总结一下 ...

  9. JavaScript中常见的字符串操作函数及用法

    JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...

  10. oracle的substr函数的用法

    oracle的substr函数的用法 取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ] ) 如:     substr( ...

随机推荐

  1. 1, 2, and 4 symbols per clock中数据排列

    图片来自High-De€nitionMultimedia Interface (HDMI) IP Core User Guide 在自己处理的过程中很多细节的东西必须要清楚. 今天想自己从RGB数据中 ...

  2. Jersey RESTful WebService框架学习(四)使用@FormParam

    前端 <form action="/Jersey/api/1.0/my/form" method="post"> <input type=&q ...

  3. php大文件下载支持断点续传

    <?php   /** php下载类,支持断点续传  *  *   Func:  *   download: 下载文件  *   setSpeed: 设置下载速度  *   getRange: ...

  4. Qt_MainWindow简介

    QMainWindow 是Qt框架带来的一个预定义好的主窗口类.按照建立HelloWorld程序建立工程,直接运行,或有一个空窗口. main().cpp #include "mainwin ...

  5. web-day9

    第9章WEB09-Servlet篇 今日任务 完成系统的登录的功能 完成登录系统后页面定时跳转 记录系统登录成功后,系统被访问多少次 教学导航 教学目标 了解HTTP协议 掌握Servlet的编写 了 ...

  6. Codeforces821C Okabe and Boxes 2017-06-28 15:24 35人阅读 评论(0) 收藏

    C. Okabe and Boxes time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  7. Vue的路由设置

    一.路由基础介绍 1.什么是前端路由? 路由是根据不同的url地址展示不同的内容或页面 前端路由就是把不同路由对应不同的内容或页面的任务交给前端来做,之前是通过服务器根据url的不同返回不同的页面实现 ...

  8. centos rpm包下载地址

    这个是6.5的下载地址,其他版本可以退回目录找相应的版本 http://vault.centos.org/6.5/updates/x86_64/Packages/

  9. E - Evaluate Matrix Sum

    Description Given a matrix, the elements of which are all integer number from 0 to 50, you are requi ...

  10. 不一样的网络流系列——Dinic跑得快

    前言 摆王兴致冲冲地跑到我们机房来对我说跟你讲一个黑科技... Dinic的神奇优化 Dinic优化 我们发现如果Dinic不建反向边会跑的飞起(当然Wa是必然的) 所以考虑在加反向边的基础上优化. ...