java lambda 排序_Java8特性:Lambda表达式之概念篇

本文聚焦Java 8的Lambda表达式,介绍其概念与简单使用。通过对List集合降序排序的例子,对比非Lambda与Lambda表达式的实现方式,显示出Lambda更简洁,还能避免生成多余类文件。同时指出Lambda表达式使用有限制,需用于函数式接口处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java自诞生已经有十几个年头了,目前也已经发布了第十三个大版本,其中Java8是常用的版本中最新的一个版本。而Java8最大的特性就是:Lambda表达式、函数式接口和Stream流。

本篇我只介绍Lamda表达式的概念以及简单使用,至于别的我打算放到另一篇文章中讲,否则会导致文章太过臃肿。废话不多说,下面进入正题。

对于Lambda表达式来说,Java是在JDK8之后引入的。其目的是将一段代码作为参数进行传递,其格式为:

(参数列表) -> {逻辑代码块}

在没有Lambda表达式的日子里,为了将一段代码作为参数传递,我们不得不使用对象来实现。但是自从Lambda表达式有了之后,我们就可以跟过去的方式说再见。

下面我写一个简单的例子给大家感受感受。本例子的作用是调用Collections的sort的方法对一个List集合进行降序排序。因为默认的排序方式是升序的,所以我们需要传入自定义的比较器。

首先先来看一些非Lambda表达式方式的实现:

8b60fd182bd0cfec107953967622e44c.png

非Lambda方式实现

接着再来看看使用Lambda表达式的方式实现:

5392532758e57a38bcdc09103e2c769c.png

我这个例子的目的是为了实现一个整型集合的倒序排列。从上图可以看出,使用Lambda表达式方式实现明显要比接口实现类对象方式简洁得多。

那么使用Lambda和不使用Lambda只是这种区别么?不,还有一个区别。那就是编译后是否会生成额外的内部类文件。

不使用Lambda表达式的时候用“javac”编译后效果如下:

2d1ba77dfa1b526edca9f0f9bb88dafd.gif

使用Lambda表达式时候用“javac”命令编译后效果如下:

1f2ff39cd38694f98a93a4aac02e25cd.gif

对比后发现,使用Lambda方式后还可以避免生成多余的类文件。

既然,使用Lambda表达式这么爽,那么是不是可以无限制使用呢?不,使用Lambda表达式还是有限制条件的,其限制条件就是只能是运用在使用函数式接口的地方。关于函数式接口的内容大家可以自己在网上看相关资料或查看我的另一篇文章:Java8特性:函数式接口之概念篇,这里就不过多提及了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值