Function--jdk8用法
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用法的更多相关文章
- boost::function的用法
本片文章主要介绍boost::function的用法. boost::function 就是一个函数的包装器(function wrapper),用来定义函数对象. 1. 介绍 Boost.Func ...
- boost::bind 和 boost::function 基本用法
这是一篇介绍bind和function用法的文章,起因是近来读陈硕的文章,提到用bind和function替代继承,于是就熟悉了下bind和function的用法,都是一些网上都有的知识,记录一下,期 ...
- c/c++ 重载运算符 标准库function的用法
重载运算符 标准库function的用法 问题:int(int, int)算不算一种比较通用的类型?? 比如函数: int add(int a, int b); 比如lambda:auto mod = ...
- python3新特性函数注释Function Annotations用法分析
本文分析了python3新特性函数注释Function Annotations用法.分享给大家供大家参考,具体如下: Python 3.X新增加了一个特性(Feature),叫作函数注释 Functi ...
- (function(){})()的用法
最近在整理javascript 学习,发现这个问题了 ,在网上发现这么个解释 最清楚 最明白 : (function(){})() 相当于先定义 function xx(){},后调用 xx(); ( ...
- Extjs中renderer:function函数用法
renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){ } 1.value是当前单元格的值 2.cellme ...
- $(function(){})和$(document).ready(function(){}) 的用法
当文档载入完毕就执行,以下几种效果是等价的:1. $(function(){ //这个就是jQuery ready()的简写,即下2的简写 // do something }); 2. $(docum ...
- c++11:function的用法
function是函数.函数对象.函数指针.和成员函数的包装器,可以容纳任何类型的函数对象,函数指针,引用函数,成员函数的指针 普通函数 #include <functional> voi ...
- js中,(function(){})()的用法解析
(function($){...})(jQuery) 含义 经常用,今天总结一下,下文摘自某网友的总结: (function($){...})(jQuery)实际上是匿名函数,不懂得朋友可以继续往下 ...
- ECharts中color : function的用法(转)
ECharts图表实战经验1:如何设置图表同序列不同数据点的独立颜色值 最近有不少朋友在追问这样一个问题:我单序列的柱状图,我想让每一个根柱子的颜色都不一样,应该如何做? 针对这个问题,其实我只想 ...
随机推荐
- 数据集成平台关于【源平台调度&任务生命周期】
任务调度者 调度事件 生产任务 调度任务池-异步 AsynDispatcher --source 实例化适配器执行 消费任务 实例化集成应用 DataHub Instance handleSource ...
- 用友NCC&WMS&泛微 系统对接案例分享
用户故事 产品版本:NCC2105 故事是这么开始的,用友全国伙伴社区的社区成员,对我们的多系统集成架构很感兴趣,经常跟我讨论相关系统集成层面的问题:随着企业的发展,由于信息产业的技术含量高,信息系统 ...
- idea测试类没有运行按钮,右键没有Run、Debug
问题 原因 编写测试类错误 解决办法 选择合适的路径
- 用Python编写 2048 命令行小游戏
本篇博文围绕使用Python开发热门游戏2048 GAME(命令行版本) 代码未做任何优化(原生且随意).全程以面向过程.MVC的设计思想为主.开发环境是Ubuntu系统下的Pycharm 2048是 ...
- CLion安装与配置教程
一.下载并安装CLion 1.下载 1.官网: Download CLion 2.注意: 这里建议使用2021.1.3版本之前,为之后的使用便利而做打算. (这里以Windows系统为例,其他系统类似 ...
- MySQL运维3-分库分表策略
一.介绍 单库瓶颈:如果在项目中使用的都是单MySQL服务器,则会随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行存储,存在一下性能瓶颈: IO瓶颈:热点数据太多,数 ...
- Java五种设计模式实现奶茶订单生成系统小DEMO
前言 这是大学时候上设计模式这门课写的程序,当时课程任务是要求结合五个设计模式写一个系统,最近偶然翻到,把系统分享一下. 成品预览 主界面 功能介绍 订单管理系统,实现了对订单的增删改查.且实现了 ...
- 3D 高斯点染简介
3D 高斯点染技术由 3D Gaussian Splatting for Real-Time Radiance Field Rendering 一文首次提出.作为一种栅格化技术,3D 高斯点染可用于实 ...
- DTD快速入门
DTD快速入门
- 神经网络优化篇:详解梯度的数值逼近(Numerical approximation of gradients)
在实施backprop时,有一个测试叫做梯度检验,它的作用是确保backprop正确实施.因为有时候,虽然写下了这些方程式,却不能100%确定,执行backprop的所有细节都是正确的.为了逐渐实现梯 ...