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:如何设置图表同序列不同数据点的独立颜色值 最近有不少朋友在追问这样一个问题:我单序列的柱状图,我想让每一个根柱子的颜色都不一样,应该如何做? 针对这个问题,其实我只想 ...
随机推荐
- 黑客玩具入门——4、漏洞扫描与Metasploit
1.Legion漏洞扫描分析工具 Legion是Sparta的一个分支,它是一个开源的.易于使用的.超级可扩展的.半自动的网络渗透测试框架.它是一款Kali Linux系统默认集成的Python GU ...
- 如何用excel制作图表?
Excel是一个非常强大的电子表格软件,其中包含了很多绘制图表的功能.下面是一些基本步骤,可以帮助你用Excel制作图表: 打开Excel并输入数据.在Excel中,首先需要输入需要制作图表的数据.可 ...
- 14、Map
1.Map的定义 map是Go中的内置类型,它将一个值与一个键关联起来.可以使用相应的键检索值.Map 是一种无序的键值对的集合.Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引 ...
- 2024年 Kubernetes 四大趋势预测
Kubernetes 在生产环境中的复杂性已经成为常态,在2023年这个平台工程盛行的时代,容器管理的最大亮点可能在于其灵活性,然而在运维政策和治理等方面仍然存在诸多挑战.Kubernetes 最大的 ...
- 痞子衡嵌入式:简析i.MXRT1170 MECC64功能特点及其保护片内OCRAM1,2之道
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170 MECC64功能特点及其保护片内OCRAM1,2之道. ECC是 "Error Correcting C ...
- 简单几行实现sliver上线提醒
准备魔改sliver去掉一些特征什么的,这里记录一下最简单实现上线消息通过企业微信机器人提醒的方式,这很简单也有很多不足还需要接着改的 protobuf中对消息Beacon和Session的定义如下, ...
- Windows Server2016 默认使用英文输入法或默认使用中文输入法
1.确认是Server2016操作系统及以后版本 2.打开开始菜单"设置"--"时间和语言" 3.添加英文输入法(已存在可以跳过) 找到"区域与语言& ...
- BUUCTF Web CyberPunk WriteUp
想直接查看payload的点这里 前言 二次注入(Second-Order Injection)是指攻击者在应用程序中注入恶意数据,然后在稍后的操作或不同的上下文中再次使用该恶意数据,导致安全漏洞.它 ...
- rime中州韵 输入效果一览 100+增强功能效果
rime是一个定制化程度很高的输入法框架, 我们可以在该框架上搭建适合自己的输入法程序.我们将在专栏 小狼毫 Rime 保姆教程 中完成以下近百种定制化效果的配置与演示.欢迎订阅. 以下为个性化定制的 ...
- 云图说|应用编排服务AOS,助力应用上云自动化
如今,企业想要扩大业务.进行创新,上云已经成为了必经之路.应用编排服务AOS为企业提供应用上云的自动化能力,支持编排华为云上的主流云服务,将复杂的云服务资源配置和应用部署配置通过模板描述,从而实现在华 ...