本文档的的blog版http://blog.csdn.net/zhrubin/article/details/24598873#t2 说明:本文档主要讲解java8中的Lambda表达式。内容完全基于java 8 tutorial,加上一些自己的注释与理解。使用代码本身来进行解释(这是java 8 tutorial中的风格),同时去掉一些无关紧要的知识点(比如泛型等),并且增加了一些自己的必要的注释,相信更易于大家理解。 Java 8 中的 Lambda 表达式是语言的重大更新,它引入了函数式编程的概念,使得代码更加简洁、易读。Lambda 表达式的主要目的是简化处理匿名内部类的情况,尤其是当这些类只需要一个方法时。 在传统的 Java 编程中,如果需要对集合进行过滤或操作,通常会定义一个接口并实现该接口的方法,如 Approach 3 和 Approach 4 所示。然而,这样的方式代码冗余且可读性较差。Lambda 表达式则允许我们直接在调用方法时传递行为,就像 Approach 5 那样。 Lambda 表达式的语法如下: `(parameters) -> expression` 这里的 `parameters` 是参数列表,`expression` 是执行的操作。例如,在 Approach 5 中的 Lambda 表达式 `(Person p) -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25` 就是一个接受一个 `Person` 类型参数 `p` 的 Lambda,然后返回一个布尔值,表示这个人的性别为 `MALE` 并且年龄在 18 至 25 岁之间。 Lambda 表达式可以被赋值给一个变量,或者作为参数传递给方法。在 Java 8 中,它们常常与称为函数式接口的特殊接口一起使用。函数式接口只有一个抽象方法,例如 `java.util.function.Predicate` 接口,它的 `test` 方法接收一个对象并返回一个布尔值,非常适合用于条件检查。 在 Approach 5 中,`CheckPerson` 接口可以被 `Predicate<Person>` 替代,使代码更具通用性。这样,我们就可以这样写: ```java import java.util.function.Predicate; // ... printPersons(roster, p -> p.getGender() == Person.Sex.MALE && p.getAge() >= 18 && p.getAge() <= 25); ``` 此外,Java 8 提供了一系列内置的函数式接口,如 `Consumer`(无返回值,只执行操作)、`Function`(将一个对象转换成另一个对象)和 `Supplier`(提供一个值,无需输入参数)。这些接口与 Stream API 结合使用,能够方便地对集合进行过滤、映射和聚合操作,大大提高了代码的简洁性和可读性。 Lambda 表达式还可以配合方法引用来使用。例如,`List` 接口中的 `sort` 方法接受一个 `Comparator`,我们可以用 Lambda 来实现比较逻辑: ```java roster.sort((p1, p2) -> Integer.compare(p1.getAge(), p2.getAge())); ``` Java 8 的 Lambda 表达式是简化代码、提高代码可读性和灵活性的重要工具。通过将行为作为参数传递,Lambda 表达式使得函数式编程风格在 Java 中得以实现,为开发者提供了更多编写高效、简洁代码的选择。
剩余9页未读,继续阅读
- 粉丝: 17
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实
- 157389节奏盒子地狱模式第三阶段7.apk
- 操作系统实验ucore lab3