冒号运算 java_java 8 双冒号运算符
前言
java8增加了双冒号运算符、lambda本质上都是语法糖,学习过C#委托、匿名委托再理解java8中的双冒号运算符就容易多了。双冒号就是把方法当作参数传递给需要的方法,或者说是传递到stream()中去。换句话说java8双冒号运算符就是方法引用。方法引用又包括实例方法、静态方法。语法格式类名::方法名。
Java8 VS C#委托
1、Consumer 包含一个accept(T t) 该方法接收一个参数,执行一个没有返回值的操作。在C#里相当action委托,有参数,但没有返回值,action可以有多个参数。
2、Predicate 接收一个参数,返回boolean值,和C# Predicate一样,都是接收一个参数,返回boolean值。
3、Function T为参数,R为返回值。 包含方法 R apply(T t)接收一个参数,返回值为R,如果需要调用多个操作则使用andThen()。在C# 等价于Func委托。
Show Demo
通过java8实战中交易员和交易记录的列子来理解下。计算出来自剑桥的交易员并且按照其姓名排序。
下面的例子Comparator.comparing需要一个Function委托,分解出来就是 Function byName=(trader)->trader.getName();
List trans=transactions
.stream()
.map(Transaction::getTrader)
.filter(t->t.getCity().equals("Cambridge"))
.distinct()
.sorted(Comparator.comparing(Trader::getName))
.collect(toList());
//3.1
Function byName=(trader)->trader.getName();
trans=transactions
.stream()
.map(Transaction::getTrader)
.filter(t->t.getCity().equals("Cambridge"))
.distinct()
.sorted(Comparator.comparing(byName))
.collect(toList());
for(Trader tr:trans){
System.out.println(tr.getName());
}
冒号运算 java_java 8 双冒号运算符相关推荐
- 对makefile中:单冒号普通规则和::双冒号规则的理解 -转
原文地址:对makefile中:单冒号普通规则和::双冒号规则的理解 作者:gliethttp luther: /gliethttp/a.c /gliethttp/b.c /gliethttp2/c. ...
- c++中的点号(.),冒号(:)和双冒号(::)运算符
1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{unsigned char a:4; //char型的字符a占4位unsigned ...
- python中双冒号_c++中冒号(:)和双冒号(::)的用法和c/c++ 位域结构体
1.冒号(:)用法 (1)表示结构体内 位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; }XX ...
- c++中冒号(:)和双冒号(::)的用法
转载于:http://fengqing888.blog.163.com/blog/static/3301141620100623933512/ 1.冒号(:)用法 (1)表示机构内位域的定义(即该变量 ...
- c\c++中单冒号(:)和双冒号(::)的用法
一.单冒号(:) 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便, ...
- php中的冒号应用,php中双冒号的应用
php类代码中常看到"::"的操作符,这个是作用域限定操作符,是用一个双冒号"::"表示,它用来置顶类中不同作用域的级别.左边是作用域右边是访问作用域的成员. ...
- mysql 双冒号,SQL中的双冒号(::)符号
Have picked up someone's code and this is a part of a where clause, anyone know what the double colo ...
- ES6 浅谈箭头函数,双冒号符号
1.箭头函数 ES6 允许使用"箭头"(=>)定义函数. var cat= function (name) { return "tom";}; va ...
- java中的双冒号操作符
java :: Java中的双冒号操作符 </h1><div class="clear"></div><div class="p ...
最新文章
- Facebook 正在研究新型 AI 系统,以自我视角与世界进行交互
- 【转载】mysql主键的缺少导致备库hang
- 7秒钟的记忆?Facebook提出DL新算法,东南大学90后博士新作
- SQL 语句中 left join 后用 on 还是 where,区别大了!
- Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入
- 如何在Dart中读取控制台输入/ stdin?
- ssh免密登录方法不生效?Authentication refused: bad ownership or modes for directory
- 七值逻辑与基本数据类型
- Effective Java(1)-创建和销毁对象
- python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹
- JS实现图片翻书效果
- html5局部放大图片,图片局部放大效果原理详解
- proteus仿真运行时出现的错误
- 正交设计 python算法_正交设计 - SegmentFault 思否
- Vscode关闭自动更新
- socks5代理IP的几种测试工具
- c0语言语法,《Groovy语言规范》-语法
- linux中的lnk格式,ink文件扩展名,ink文件怎么打开?
- 微信公众号支付对接流程
- MVP进阶及OKHttp上传图片