JAVA中的Lamda表达式

news/2024/11/23 0:07:03/

JAVA中的Lamda表达式

  • Lambda 表达式的语法
  • 使用场景
  • 示例代码
      • 1.代替匿名内部类
      • 2. 带参数的 Lambda 表达式
      • 3. 与集合框架结合使用
      • 4. 使用 Stream 操作
  • 总结

Java 的 Lambda 表达式是 Java 8 引入的一个新特性,用于简化代码,特别是在处理函数式编程时。Lambda 表达式提供了一种更简洁和灵活的方式来表示匿名函数(或称闭包)。

Lambda 表达式的语法

java">  (parameters) -> expression或(parameters) -> { statements; }
  • parameters:参数列表,可以为空,也可以有一个或多个参数。
  • ->:箭头操作符,分隔参数列表和方法体。
  • expressionstatements:表示方法体,可以是单个表达式或多条语句(用大括号括起来)。

使用场景

Lambda 表达式主要用于简化接口实现,特别是函数式接口(即只有一个抽象方法的接口)。例如:

  • 替代匿名内部类
  • 配合集合框架的操作,如 stream、map、filter 等

示例代码

1.代替匿名内部类

传统写法:

java">Runnable r1 = new Runnable() {@Overridepublic void run() {System.out.println("Hello, world!");}
};
r1.run();

Lambda 表达式写法:

java">Runnable r2 = () -> System.out.println("Hello, world!");
r2.run();

2. 带参数的 Lambda 表达式

传统写法:

java">Comparator<Integer> comparator = new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}
};

Lambda 表达式写法:

java">Comparator<Integer> comparator = (o1, o2) -> o1 - o2;

3. 与集合框架结合使用

传统写法:

java">List<String> list = Arrays.asList("a", "b", "c");
for (String s : list) {System.out.println(s);
}

Lambda 表达式写法:

java">List<String> list = Arrays.asList("a", "b", "c");
list.forEach(s -> System.out.println(s));

4. 使用 Stream 操作

使用 Lambda 表达式和 Stream API 可以方便地进行集合的过滤、映射和聚合操作:

java">List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
System.out.println(evenNumbers); // 输出:[2, 4]

总结

Lambda 表达式简化了匿名类的语法,尤其在配合函数式接口和 Java 8 的 Stream API 时显得特别强大。它的主要优点包括:

  1. 代码简洁:减少冗余代码。
  2. 可读性提高:表达逻辑更加清晰。
  3. 便于函数式编程:与 Java 8 的新特性(如 Stream)结合使用效果最佳。

注意:

  • Lambda 表达式只能用于函数式接口(只有一个抽象方法的接口)。
  • 使用时需要注意上下文和类型推导的正确性。

http://www.ppmy.cn/news/1549161.html

相关文章

MySQL 数据库的三大范式及其示例

MySQL 数据库的三大范式及其示例 在数据库设计中&#xff0c;范式&#xff08;Normalization&#xff09;是一种规范化的方法&#xff0c;旨在减少数据冗余、提高数据完整性和查询效率。MySQL 数据库中最常用的三大范式分别是第一范式&#xff08;1NF&#xff09;、第二范式&a…

mysql中mvcc如何处理纯读事务的?

在 MySQL 的 InnoDB 中&#xff0c;即使事务尚未分配事务 ID&#xff0c;读视图&#xff08;Read View&#xff09; 的生成仍然依赖于系统中的活跃事务列表。这是通过 MVCC 的机制来实现的&#xff0c;以下是具体的原理和可见性判断方法。 MVCC 的核心概念 在 MVCC 中&#xf…

【网络】网络抓包与协议分析

网络抓包与协议分析 一. 以太网帧格式分析 这是以太网数据帧的基本格式&#xff0c;包含目的地址(6 Byte)、源地址(6 Byte)、类型(2 Byte)、数据(46~1500 Byte)、FCS(4 Byte)。 Mac 地址类型 分为单播地址、组播地址、广播地址。 单播地址&#xff1a;是指第一个字节的最低位…

视频修复技术和实时在线处理

什么是视频修复&#xff1f; 视频修复技术的目标是填补视频中的缺失部分&#xff0c;使视频内容连贯合理。这项技术在对象移除、视频修复和视频补全等领域有着广泛的应用。传统方法通常需要处理整个视频&#xff0c;导致处理速度慢&#xff0c;难以满足实时处理的需求。 技术发…

jenkins的安装(War包安装)

‌Jenkins是一个开源的持续集成工具&#xff0c;基于Java开发&#xff0c;主要用于监控持续的软件版本发布和测试项目。‌ 它提供了一个开放易用的平台&#xff0c;使软件项目能够实现持续集成。Jenkins的功能包括持续的软件版本发布和测试项目&#xff0c;以及监控外部调用执行…

go的接口详解

接口的定义和格式 接口(interface)是一种类型&#xff0c;用来定义行为(方法)。这句话有两个重点&#xff0c;类型和定义行为。 首先解释定义行为&#xff1a; 接口即一组方法定义的集合&#xff0c;定义了对象的一组行为&#xff0c;就是定义了一些函数&#xff0c;由具体的…

前端三大件之CSS

引言 CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种用于描述网页文档外观和格式的样式表语言。它主要用于控制网页的布局、颜色、字体、间距等视觉效果&#xff0c;使开发者能够将内容与设计分离。 一&#xff0c;CSS的基本概念 选择器&…

【Nginx从入门到精通】04-安装部署-使用XShell给虚拟机配置静态ip

文章目录 总结1、XShell &#xff1a;方便管理多台机器2、配置ip文件&#xff1a;区分大小写 一、查看上网模式二、Centos 7 设置静态ipStage 1 &#xff1a;登录root账号Stage 2 &#xff1a;设置静态ip : 修改配置文件 <font colororange>ifcfg-ens33Stage 2-1&#xf…