Stream的简单学习(一)Lambda表达式和方法引用双冒号[::]

最近入职新公司发现都在用stream和lambda表达式,简单记录学习下

Lambda是什么

允许把函数作为一个方法的参数(函数作为参数传递进方法中)的一种方式

Lambda的用法

例如:

(parameters) ->{ expression; }

我们可以看到有三部分组成

  • 参数列表 (parameters) 表示要传递的参数,个数和类型
  • ->
  • { expression; } Lambda 主体表达式

给大家列一下常见的表达式样子

// 1. 不需要参数,返回值为 5  
() -> 5  
  
// 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)

对于参数列表:

如果不声明类型,就交由编译器识别

对于括号,当一个参数的时候可以省略小括号

对于主体表达式部分:

如果只有一个主体,可以省略大括号

如果只有一个主体,可以省略返回值

Lambda如何使用

实际案例:

users.stream().map(user -> user.getAge()).forEach(e->System.out.println(e));
双冒号::
是什么

通过方法的名字来指向一个方法。

也就是所谓的方法引用

可以使语言的构造更紧凑简洁,减少冗余代码。

用法
说明语法例子
静态方法引用classname::methodnameUser::getAge
对象的实例方法引用语法nstancename::methodnameSystem.out::println
类构造器引用语法classname::newArrayList::new
数组构造器引用语法typename[]::newString[]:new
如何使用

接上方的例子,我们更改一下

users.stream().map(User::getAge).forEach(System.out::println);

是不是看着简洁了很多

就这样 简简单单

开发中多多使用就会变得熟练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值