Lambda表达式。首先是参数部分,接着是->,可以视为产出,->之后的内容都是方法体。

  • 当只有一个参数时,可以不需要括号();
  • 正常情况使用()包裹参数,为了保持一致性,也可以使用括号()包裹单个参数;
  • 如果没有参数,则需要使用()表示空参数列表;
  • 对于多个参数,将参数列表放在()内;
  • 如果Lambda表达式中需要多行,那就需要将这些行放在花括号中,并且需要使用return返回产出。
示例
() → System.out.println("Zero parameter");
(p) → System.out.println("One parameter p="+ p);
(a b c) → System.out.println("Multiple parameter a="+ a+" b="+b+" c="+c); (a b) -> {
int sum=a+b;
return sum;
}
public static void main(String[] args) {
/**
* Function<T, R>: 接收1个输入参数,返回1个结果
*/
Function<Integer, Integer> func1 = i -> {return i+5;};
System.out.println(calculate(6, func1)); /**
* BiFunction<T, U, R> 接受1个入参T和U,并返回结果R。
*/
BiFunction<String, Integer, String> biFunction = (key, value) -> {return (key + ":" + String.valueOf(value));};
String key = "age";
Integer value = 18;
System.out.println(biFunction.apply(key, value)); /**
* Supplier 生产功能函数,无入参,返回1个结果。
*/
Supplier<String> supplier = () -> {return "Supplier: 商品";};
System.out.println(supplier.get()); /**
* Consumer 消费函数,接收1个输入参数并且无返回的操作
*/
Consumer<String> consumer1 = s -> System.out.println(s + ",我是消费者1");
consumer1.accept("铁甲小宝"); /**
* BiConsumer<T, U> 消费函数,接受2个输入参数的操作,并且不返回任何结果。
*/
BiConsumer<String, Integer> biConsumer1 = (s, i) -> {
System.out.println("我是消费逻辑1" + "," + s + "," + (i + 4));
};
biConsumer1.accept("铁甲小宝", 6); /**
* Predicate 断言函数,接受1个输入参数,返回1个布尔值结果。
*/
// 断言输入值是否大于10
Predicate<Integer> isSuperTen = i -> {return i>10;};
System.out.println("P:"+ isSuperTen.test(11));
System.out.println("P:"+ isSuperTen.test(6)); /**
* BiPredicate<T, U> 对2个输入参数T和U进行断言,返回1个布尔值输出。
*/
// 判断输入1是否大于10,且输入2小于20
BiPredicate<String, Integer> biPredicate = (s, i) -> {
return Integer.parseInt(s) > 10 && i < 20;
};
System.out.println("B:"+biPredicate.test("15", 16));
System.out.println("B:"+ biPredicate.test("15", 21)); } public static Integer calculate(Integer i, Function<Integer, Integer> function){
return function.apply(i);
}

Function--jdk8用法的更多相关文章

  1. boost::function的用法

    本片文章主要介绍boost::function的用法. boost::function 就是一个函数的包装器(function wrapper),用来定义函数对象. 1.  介绍 Boost.Func ...

  2. boost::bind 和 boost::function 基本用法

    这是一篇介绍bind和function用法的文章,起因是近来读陈硕的文章,提到用bind和function替代继承,于是就熟悉了下bind和function的用法,都是一些网上都有的知识,记录一下,期 ...

  3. c/c++ 重载运算符 标准库function的用法

    重载运算符 标准库function的用法 问题:int(int, int)算不算一种比较通用的类型?? 比如函数: int add(int a, int b); 比如lambda:auto mod = ...

  4. python3新特性函数注释Function Annotations用法分析

    本文分析了python3新特性函数注释Function Annotations用法.分享给大家供大家参考,具体如下: Python 3.X新增加了一个特性(Feature),叫作函数注释 Functi ...

  5. (function(){})()的用法

    最近在整理javascript 学习,发现这个问题了 ,在网上发现这么个解释 最清楚 最明白 : (function(){})() 相当于先定义 function xx(){},后调用 xx(); ( ...

  6. Extjs中renderer:function函数用法

    renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ } 1.value是当前单元格的值 2.cellme ...

  7. $(function(){})和$(document).ready(function(){}) 的用法

    当文档载入完毕就执行,以下几种效果是等价的:1. $(function(){ //这个就是jQuery ready()的简写,即下2的简写 // do something }); 2. $(docum ...

  8. c++11:function的用法

    function是函数.函数对象.函数指针.和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针 普通函数 #include <functional> voi ...

  9. js中,(function(){})()的用法解析

    (function($){...})(jQuery)  含义 经常用,今天总结一下,下文摘自某网友的总结: (function($){...})(jQuery)实际上是匿名函数,不懂得朋友可以继续往下 ...

  10. ECharts中color : function的用法(转)

    ECharts图表实战经验1:如何设置图表同序列不同数据点的独立颜色值   最近有不少朋友在追问这样一个问题:我单序列的柱状图,我想让每一个根柱子的颜色都不一样,应该如何做? 针对这个问题,其实我只想 ...

随机推荐

  1. hive报错Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask[已解决]

    我的报错信息 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 解决1(可行):不走ya ...

  2. Hdu4742 (CDQ分治)

    题意:给出n个三维点对(x,y,z),可随意排列,求三维非严格最长上升子序列长度和最长上升子序列数量. 输入格式:第一行为一整数T表示用例组数,每组用例第一行为一整数n表示点数,之后n行每行三个整数x ...

  3. C++ Qt开发:如何使用信号与槽

    在Qt中,信号与槽(Signal and Slot)是一种用于对象之间通信的机制.是Qt框架引以为傲的一项机制,它带来了许多优势,使得Qt成为一个强大且灵活的开发框架之一.信号与槽的关联通过QObje ...

  4. [GDOI22pj2D] 机器人

    第四题 机器人 提交文件: robot.cpp 输入文件: robot.in 输出文件: robot.out 时间空间限制: 3 秒, 512 MB 刚上初一的小纯特别喜欢机器人,这周末,她报名了学校 ...

  5. [ABC261E] Many Operations

    Problem Statement We have a variable \(X\) and \(N\) kinds of operations that change the value of \( ...

  6. 如何判断lib和dll是32位还是64位?答案是使用微软的dumpbin工具,后面讲了如何使用gcc生成lib和dll

    为什么我会考虑这个问题呢?因为我在使用java去调用一个c的lib库的时候,弹出以下警告: D:\work\ideaworkpaces\jdk21Test001\src\main\java\lib\h ...

  7. .NET周刊【12月第2期 2023-12-13】

    国内文章 用最清爽的方式开发dotNet https://www.cnblogs.com/ncellit/p/17881779.html 本文介绍了如何以清爽的方式开发dotNet应用,特别是简单的A ...

  8. 华企盾DSC防泄密客户端安装卡住

    解决方法: 1.安装了杀毒或者同行软件,退出后安装不行的话卸载掉 2.注册表编辑被管理员禁用,导致客户端安装时一直卡住,启用注册表编辑(后续2021.6.21后发布的版本可直接安装) 由于安装了卡巴斯 ...

  9. 格网DEM生成不规则三角网TIN

    目录 概述 详论 1️⃣数据准备 2️⃣转换算法 3️⃣TIN构建 4️⃣具体实现 5️⃣实验结果 参考 概述 在GIS(地理信息科学)中,地形有两种表达方式,一种是格网DEM,一种是不规则三角网TI ...

  10. Multi-Architecture镜像制作指南已到,请查收!

    摘要:使用Multi-Architecture镜像,可以让docker根据系统架构去拉取对应的镜像,服务的部署脚本等可以在不同架构的系统间使用相同的配置,减化服务配置,提高了服务在不同系统架构间的一致 ...