当前位置: 首页 > news >正文

Java Lambda 表达式

Lambda 表达式的本质是:把行为(代码)当作参数传递。它让 Java 具备了函数式编程的能力,配合 Stream API 使用,可以写出非常简洁、优雅的代码。

Lambda

Lambda 表达式是 Java 8 引入的核心特性,它允许你以简洁的方式编写匿名函数(没有名字的方法),是函数式编程的基础。

基本语法

(参数列表)->{方法体}
部分说明
(参数列表)可以省略类型,多个参数用逗号分隔
->箭头操作符,分隔参数和方法体
{ 方法体 }单行可省略{}return
// 无参数()->System.out.println("Hello")// 一个参数(可省略括号)x->x*x// 多个参数(a,b)->a+b// 多行方法体(需要 {} 和 return)(x,y)->{intsum=x+y;returnsum*2;}

前提:函数式接口

Lambda 表达式只能用于函数式接口——即只有一个抽象方法的接口(可以有多个 default/static 方法)。

@FunctionalInterfacepublicinterfaceRunnable{voidrun();// 只有一个抽象方法}@FunctionalInterfacepublicinterfaceFunction<T,R>{Rapply(Tt);// 只有一个抽象方法}

常见使用场景

创建线程

// 传统写法newThread(newRunnable(){@Overridepublicvoidrun(){System.out.println("Hello");}}).start();// Lambda 写法newThread(()->System.out.println("Hello")).start();

Stream 流操作

List<String>names=users.stream().filter(user->user.getAge()>=18)// Predicate<User>.map(user->user.getName())// Function<User, String>.collect(Collectors.toList());

集合遍历

// 传统写法for(Stringname:names){System.out.println(name);}// Lambda 写法names.forEach(name->System.out.println(name));// 更简洁:方法引用names.forEach(System.out::println);

排序

List<String>list=Arrays.asList("b","c","a");// 传统写法Collections.sort(list,newComparator<String>(){@Overridepublicintcompare(Stringa,Stringb){returna.compareTo(b);}});// Lambda 写法Collections.sort(list,(a,b)->a.compareTo(b));// 更简洁list.sort(String::compareTo);

Lambda 与匿名内部类的区别

对比项匿名内部类Lambda 表达式
本质创建一个新类的实例不创建新类,直接指向方法实现
this指向指向内部类自身指向外部类实例
变量捕获可以修改实例变量只能引用有效 final 的局部变量
性能生成额外的.class文件更轻量(通过invokedynamic实现)
http://www.jsqmd.com/news/1154255/

相关文章:

  • Apache Flink:以流式处理承载数据范式演进,助力多模态处理成生产系统
  • 中东地区3C电子产品物流行业趋势分析
  • 本地商家 GEO 优化实操指南:6 步让 AI 搜索优先推荐你的门店
  • UL 2054 电池组安全标准详解:亚马逊DV验证机制下的合规要求与标准体系
  • 深度学习水印 E-N-D 框架解析:从 HiDDeN 到 CIN 的 2 大演进路径
  • 计算机毕业设计之基于SSM社区留守儿童帮扶系统的设计
  • 绝地求生罗技鼠标宏:5分钟掌握完美压枪技术
  • 星元素甄选教会我的事:采购不是“买东西”,是“买确定性”
  • 《美好国家的建筑方法》 动漫|在线观看|下载
  • 工业负载控制:TPD2017FN与PIC32MX470方案解析
  • Ceph 架构复杂?轻量级统一存储 PowerFS 技术方案解析
  • GEO精准投喂技术全解:三元组结构化优化,让AI稳定收录并优先推荐商家信息
  • 终极AMD Ryzen性能解锁:SMU调试工具完全指南
  • 如何快速上手Mermaid Live Editor:实时图表编辑的终极指南
  • 数智赋能 | 国家生态环境监测网络转型加速起航
  • 基于MA12070与PIC18F46K40的高保真音频系统设计
  • RK新建产品板级目录
  • 2026拉萨必吃榜:这5家宝藏餐厅本地人排队也去
  • 学术写作避坑指南:从5个审稿案例看SCI论文的常见结构与论证缺陷
  • 展示型网站制作公司排行怎么看?先分清模板、SaaS和设计服务
  • 新手必看!一文教你轻松开启法斯特GEO服务的使用之旅
  • 如何高效使用NoSleep:Windows防休眠工具的完整实战指南
  • Vibe Coding入门实操指南!三步帮你找到最适配的AI编程方案
  • 终极指南:如何用Video Download Helper轻松保存任何在线视频
  • 计算机毕业设计之考研在线复习平台
  • TTS-Backup:5步构建Tabletop Simulator数据保护的终极解决方案
  • AZtecCrystal2.1安装失败原因与系统级部署指南
  • Steam成就管理终极指南:如何用开源工具轻松掌控游戏成就
  • 当你的采购记录能说话,它会告诉你什么?
  • 如何完整导出微信聊天记录:开源工具WeChatExporter的5步解决方案