Jdk8之lambda表达式的使用(二)

看这个之前,我当成你们已经看过之前的(一)了,没有看过的请回头看看哦,便于理解

这里我们可以看到,实现比较的接口之后,因为这个接口满足我们所说的功能性接口,所以这里我们可以使用lambda表达式,可以看到排序前和排序后的结果,说明我们的代码是没有问题的,大家应该可以看得懂."->" 操作符前面是接口中的方法的参数列表,后面是实现接口的方法中的表达式.是不是和以前写的差别很大啊?

看看以前的吧:


代码比以前的少了很多吧,其实还是挺方便的,可能有的童鞋没有习惯而已,多用就行了嘛~~~

小金子就多举一些例子给大家,让大家在实践中学会lambda表达式!其实可以举得例子是很多很多的,这个大家自己去发现.

下面是一个便利集合的方法,这是迭代器Iterable中新添加的一个默认的方法,


利用它可以实现集合的遍历,更加简单了!

先上普通的方式:


但是还是创建了一个内部类,能不能更简单些呢?

我们点到接口Consumer中发现这就是一个功能性的接口,我们还可以看到这个接口上面还用了一个注解来标识!


这个类从1.8才有的,而且很明确可以知道这就是一个功能性的接口,那我们就可以更简单的实现便利!


我们可以看到一行代码搞定了! 大家有没有越来越熟悉?还是老规矩:

操作符"->"前面是一个括号,括号中是接口中的方法的参数列表,这里的t我没有写类型,是因为Java会自动判断出这个t变量的数据类型就是我们之前用常规方法实现的接口Consumer中的抽象方法void accept(T t);中的t变量的类型T,而这里的T因为List集合实现了Consumer接口,并制定泛型T就是List的泛型。"->"后面的,简单的说就是方法accept需要执行的语句!

是不是代码量变得好少?

我们可以发现我们之前写的代码,操作符"->"都是只有一个语句,而且没有return语句。这是因为如果后面的语句没有用{}包裹,那就只能写一个语句,而且不用写return 关键字,默认就会返回这个语句的返回值!

所以接下来我们来尝试用{}包裹的是怎么样的


其实用{}包裹了之后不同的之处就是我可以写任意多的语句了.而且没有了我们Jdk8之前实现一个接口的内部类的那种看着不太爽的形式.代码就好像写了一个if条件语句那样的格式,十分的简洁!

这个是没有返回值的,那么有返回值的呢?

我们拿之前的List集合的排序的那个作为示例


这里我还给出了没有{}包裹的形式,作为对比,看到了吧,区别就是:

1.没有{}包裹的不用写return 关键字,有{}包裹的,如果有返回值,必须使用return 关键字返回数据

2.没有{}包裹的只能写一个语句,小金子想可能的原因有:省略了return 关键字,如果没有{}包裹的情况下有多个语句,用什么隔开?逗号?封号?所以想想就知道了这两个这应该就是主要的原因了,而{}包裹的因为有{}为区域,所以里面可以有任意个语句,和平常的使用没有多大的差异!

好了,小金子今天就带你们写到这里,随笔记录自己学习的东西,希望能和大家一起学习,有问题可以留言哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值