从零开始学 Lambda:用最简单的例子理解函数式编程

简介: Lambda表达式是Java 8引入的匿名函数,可简洁地表示可传递的行为。它语法简练,支持函数式编程,常用于替代接口实现,并可结合方法引用使代码更优雅。

1. 什么是 Lambda 表达式?

Lambda 表达式,也叫匿名函数,是 Java 8 引入的一种函数式编程写法。
它允许我们用更简洁的方式表示一个可以传递的行为,而不必像以前那样定义一个完整的类或方法。

特点:

  • 轻量级:不需要单独写实现类
  • 可以作为参数传递
  • 让代码更简洁

2. Lambda 的基本语法

Lambda 的语法格式如下:

(参数列表) -> { 方法体 }

如果方法体只有一条语句,可以省略大括号 {} 和 return:

(参数列表) -> 表达式

3. 简单例子

假设我们有一个字符串列表,想要打印每个字符串:

import java.util.Arrays;
import java.util.List;

public class LambdaExample {
   
    public static void main(String[] args) {
   
        List<String> list = Arrays.asList("Java", "Python", "C++");

        // 使用 Lambda 打印每个元素
        list.forEach(s -> System.out.println(s));
    }
}

运行结果:

Java
Python
C++

解释:s -> System.out.println(s) 是一个 Lambda 表达式,相当于给 forEach 提供了一个“执行行为”。


4. Lambda 与方法引用

如果 Lambda 体仅仅调用一个已有方法,可以使用 方法引用(Method Reference):

list.forEach(System.out::println);

效果与 Lambda 相同,但代码更简洁。


5. 带返回值的 Lambda

假设我们想计算两个整数的和,可以写一个 Lambda 表达式:

interface Calculator {
   
    int calc(int a, int b);
}

public class LambdaReturn {
   
    public static void main(String[] args) {
   
        Calculator sum = (a, b) -> a + b;
        System.out.println(sum.calc(5, 3)); // 输出 8
    }
}

Lambda 表达式 (a, b) -> a + b 实现了 Calculator 接口的 calc 方法。


6. 小结

  1. Lambda 是 Java 8 引入的匿名函数写法
  2. 用法简单,代码更简洁
  3. 可以结合方法引用进一步优化代码
  4. 可作为参数传递,实现函数式编程思想

7. 练习

  1. 使用 Lambda 打印一个整数列表的每个元素
  2. 用 Lambda 实现一个接口,计算两个数的乘积
  3. 尝试把 Lambda 替换为方法引用

作者提示:
Lambda 是现代 Java 开发必会的技能,掌握它可以让你的代码更加优雅。

相关文章
|
4月前
|
存储 并行计算 安全
【Java基础】Java 8-21新特性 :Lambda表达式、函数式接口、Stream流、Optional(附《思维导图》+《面试高频考点清单》)
本文系统梳理Java 8–21核心新特性,聚焦面试高频考点:Lambda表达式、函数式接口、Stream流(惰性求值/并行流/map与flatMap区别)、Optional空值安全处理,并涵盖JDK9–21关键演进(模块化、var、Record、虚拟线程等),辅以原理剖析与实战代码,助力高效备战。
|
3月前
|
人工智能 并行计算 前端开发
绕过摩尔定律的时钟独裁
本文提出一种摒弃全局时钟的异步类脑AI芯片架构,以“握手协议”替代同步节拍,实现按需激活、分层异构(成熟工艺控路+尖端工艺运算)与稳态零功耗,兼顾高能效、强容错与可扩展性,为突破摩尔定律瓶颈提供新路径。(239字)
|
3月前
|
人工智能 运维 数据中心
拆解光模块:从传统分立器件到硅光芯片的集成革命
本文揭秘光模块核心构成(TOSA/ROSA、激光器、调制器、探测器、DSP等),对比传统分立器件与硅光集成技术:前者成熟稳定,后者依托CMOS工艺将光器件“刻”入硅芯片,实现高集成、低功耗,但需外置光源。二者按距离、成本互补共存。(239字)
|
4月前
|
Linux API 开发者
MarkText:一款被低估的开源 Markdown 编辑器
MarkText 是一款 **被严重低估** 的编辑器。它没有 Obsidian 的插件生态,也没有 Notion 的协作能力,但它做到了很多编辑器没做好的事:**把写 Markdown 这件事本身做到极致**。 干净的界面、流畅的实时预览、体贴的三种编辑模式、完整的规范支持,再加上 MIT 开源免费——如果你是一个纯粹的写作者,MarkText 就是你需要的那个工具。
2042 3
|
6月前
|
SQL Devops 数据库
SQL Server Management Studio (SSMS) 22.5 发布 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 22.5 - 微软数据库管理工具
500 2
SQL Server Management Studio (SSMS) 22.5 发布 - 微软数据库管理工具
|
10月前
|
监控 算法 Unix
Thread.sleep(0) 到底有什么用(读
Thread.Sleep用于让线程暂停执行一段时间,不参与CPU竞争。Sleep(1000)并不保证精确唤醒时间,因系统调度受优先级和资源影响;而Sleep(0)会触发系统立即重新分配CPU,给予其他线程执行机会,避免界面假死,具有实际意义。
|
11月前
|
Linux iOS开发 UED
计算机三大操作系统
Windows、macOS与Linux,三大操作系统背后是三种哲学:实用兼容、极致体验与自由开源。它们代表不同的价值观——包容大众、追求精致或掌控技术,塑造了数字世界的多元生态。选择系统,即是选择生活方式。
|
12月前
|
机器学习/深度学习 人工智能 算法
计算机的起源
从机械齿轮到量子计算,计算机的演进是一部人类智慧的史诗。本书讲述跨越五千年的计算文明史:从算盘到AI,从巴贝奇到图灵,揭示科技背后的逻辑与梦想,展现数字时代如何重塑世界。
|
10月前
|
数据库
各种锁的专题
数据库锁机制简介:包括写锁(排他)、共享锁(读)、排他锁、间隙锁、行锁、表锁及分布式锁,用于控制并发访问,保证数据一致性与完整性。
|
11月前
|
安全 开发者 Docker
Docker
Docker以轻量级容器技术重塑软件开发,实现应用构建、交付与运行的一体化。它打破环境差异,提升资源利用率,推动微服务与云原生架构发展,构建高效CI/CD流水线,成为现代软件开发的核心基石。(238字)

热门文章

最新文章