从零开始学 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、虚拟线程等),辅以原理剖析与实战代码,助力高效备战。
|
网络协议 安全 Android开发
软件丨李跳跳们现在该如何跳呢?
前段时间,李跳跳等软件被某大厂发了律师函,之后,好些个跳广告软件都相继发布公众号说明,停止维护软件,并且下架了相关软件,那我们还能跳吗?该怎么跳呢?
2600 0
软件丨李跳跳们现在该如何跳呢?
|
4月前
|
Linux API 开发者
MarkText:一款被低估的开源 Markdown 编辑器
MarkText 是一款 **被严重低估** 的编辑器。它没有 Obsidian 的插件生态,也没有 Notion 的协作能力,但它做到了很多编辑器没做好的事:**把写 Markdown 这件事本身做到极致**。 干净的界面、流畅的实时预览、体贴的三种编辑模式、完整的规范支持,再加上 MIT 开源免费——如果你是一个纯粹的写作者,MarkText 就是你需要的那个工具。
1852 3
|
6月前
|
SQL Devops 数据库
SQL Server Management Studio (SSMS) 22.5 发布 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 22.5 - 微软数据库管理工具
480 2
SQL Server Management Studio (SSMS) 22.5 发布 - 微软数据库管理工具
|
11月前
|
Linux iOS开发 UED
计算机三大操作系统
Windows、macOS与Linux,三大操作系统背后是三种哲学:实用兼容、极致体验与自由开源。它们代表不同的价值观——包容大众、追求精致或掌控技术,塑造了数字世界的多元生态。选择系统,即是选择生活方式。
|
12月前
|
机器学习/深度学习 人工智能 算法
计算机的起源
从机械齿轮到量子计算,计算机的演进是一部人类智慧的史诗。本书讲述跨越五千年的计算文明史:从算盘到AI,从巴贝奇到图灵,揭示科技背后的逻辑与梦想,展现数字时代如何重塑世界。
|
11月前
|
运维 网络安全 API
SDN 和 NFV:把网络“拆开重做”的底层革命,到底牛在哪?
SDN 和 NFV:把网络“拆开重做”的底层革命,到底牛在哪?
544 4
|
机器学习/深度学习 数据采集 算法
大模型微调技术综述与详细案例解读
本文是一篇理论与实践结合的综述文章,综合性全面介绍大模型微调技术。本文先介绍大模型训练的两类场景:预训练和后训练,了解业界常见的模型训练方法。在后训练介绍内容中,引出模型微调(模型微调是属于后训练的一种)。然后,通过介绍业界常见的模型微调方法,以及通过模型微调实操案例的参数优化、微调过程介绍、微调日志解读,让读者对模型微调有更加直观的了解。最后,我们详细探讨数据并行训练DDP与模型并行训练MP两类模型并行训练技术,讨论在实际项目中如何选择两类并行训练技术。
|
Java 关系型数据库 MySQL
如何下载远程maven仓库的jar 手动放到本地仓库?
如何下载远程maven仓库的jar 手动放到本地仓库?
3384 0
|
Java 关系型数据库 数据库连接
MyBatis-Plus介绍及Spring Boot 3集成指南
MyBatis-Plus是一个MyBatis扩展工具,旨在简化Java开发中的CRUD操作。它具有无侵入性、低损耗、强大的CRUD功能、Lambda表达式支持、主键自动生成、ActiveRecord模式、全局操作和内置代码生成器等特点。在Spring Boot 3中集成MyBatis-Plus,需在pom.xml添加依赖,排除特定版本的mybatis-spring,并用@MapperScan注解指定Mapper接口路径。此外,还介绍了如何使用MyBatis-Plus代码生成器自动生成Mapper、Model、Service和Controller层代码,以加速开发。
4313 2
MyBatis-Plus介绍及Spring Boot 3集成指南

热门文章

最新文章