Lambda表达式与新的Streams API相结合

如大家所了解的,程序员常常使用Java 8来编写更简洁、更灵活的代码,例如,他们可以将 lambda表达式与新的Streams API相结合,来表达丰富的数据处理查询:

复制代码
int total = invoices.stream()
                    .filter(inv -> inv.getMonth() == Month.JULY)
                    .mapToInt(Invoice::getAmount)
                    .sum();

上面的示例演示了如何从发票集合中计算 7 月份应付的总金额。传递一个 lambda 表达式以查找月份为 7 月份的发票,并传递一个方法引用以从发票中查找金额。 您可能想知道 Java 编译器是如何在幕后实现 lambda 表达式和方法引用的,以及 Java 虚拟机 (JVM) 是如何处理它们的。

例如,lambda 表达式只是匿名内部类的语法糖吗?毕竟,上面的代码可以通过将 lambda 表达式的主体复制到匿名类的相应方法的主体中来翻译:

复制代码
int total = invoices.stream()
                    .filter(new Predicate<Invoice>() {
                        @Override
                        public boolean test(Invoice inv) {
                            return inv.getMonth() == Month.JULY;
                        }
                    })
                    .mapToInt(new ToIntFunction<Invoice>() {
                        @Override
                        public int applyAsInt(Invoice inv) {
                            return inv.getAmount();
                        }
                    })
                    .sum();
相关推荐
AOwhisky2 分钟前
Python 学习笔记(第六期)——函数:定义、参数传递与作用域
笔记·python·学习·云原生·运维开发·函数·参数传递
@@@@@@@@543 分钟前
JavaScript 的缺点与 TypeScript 的弥补
开发语言·javascript·typescript
এ慕ོ冬℘゜13 分钟前
深度解析 JavaScript:赋予 Web 灵魂的“全栈语言”
开发语言·前端·javascript
茗创科技30 分钟前
CGE连接组:用基因表达解码脑疾病的异质性(附高分文献下载)
python·matlab·脑网络
汤米粥32 分钟前
Python调用百度搜索触发安全验证
开发语言·python
杠杠的blog38 分钟前
企业级提示词管理
python·agent·提示词·生产级实践
影寂ldy40 分钟前
C# 五大加密算法全套实战(AES/DES对称、RSA非对称、MD5/SHA256哈希)
开发语言·c#·哈希算法
小小放舟、1 小时前
VS Code Code Runner 中文乱码修复与 IDEA 风格输出配置
vscode·python·code runner
罗超驿1 小时前
6.Java LinkedList深度解析:从链表原理到源码实践
java·开发语言·链表
2501_948106911 小时前
计算机毕业设计之jsp物业管理系统
java·大数据·开发语言·汽车·课程设计