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

Lambda与Stream详解

Lambda与Stream详解

本章导读

Lambda表达式和Stream API是Java 8最具革命性的两大特性,它们共同为Java带来了函数式编程的能力。Lambda让代码更简洁,Stream让数据处理更优雅,二者配合使用可以大幅提升开发效率和代码质量。

学习目标

  • 目标1:掌握Lambda表达式的语法规则和常用函数式接口
  • 目标2:熟练使用Stream API进行数据处理,理解中间操作和终端操作的区别
  • 目标3:合理使用Collectors工具类完成复杂的数据收集和统计任务

前置知识:Java基础语法、集合框架、匿名内部类

阅读时长:约 35 分钟

一、知识概述

Lambda表达式和Stream API是Java 8最重要的新特性,它们为Java带来了函数式编程的能力,使代码更加简洁、易读。

1.1 Lambda表达式简介

┌─────────────────────────────────────────────────────────────┐ │ Lambda表达式语法 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 基本语法: │ │ (参数列表) -> { 方法体 } │ │ │ │ 示例: │ │ (a, b) -> a + b // 两参数相加 │ │ s -> System.out.println(s) // 打印字符串 │ │ () -> "Hello" // 无参数返回字符串 │ │ (x) -> x * x // 平方 │ │ │ │ 类型推断:编译器自动推断参数类型 │ │ │ └─────────────────────────────────────────────────────────────┘

1.2 函数式接口

// ============================================// 常用函数式接口// ============================================publicclassFunctionalInterfaces{publicstaticvoidmain(String[]args){// Runnable:无参数无返回值Runnablerunnable=()->System.out.println("Hello");// Supplier<T>:无参数返回TSupplier<String>supplier=()->"Hello";// Consumer<T>:接受T无返回值Consumer<String>consumer=s->System.out.println(s);// Function<T, R>:接受T返回RFunction<String,Integer>function=s->s.length();// Predicate<T>:接受T返回booleanPredicate<String>predicate=s->s.length()>5;// BiFunction<T, U, R>:接受T和U返回RBiFunction<String,String,String>biFunction=(a,b)->a+b;// BinaryOperator<T>:接受两个T返回TBinaryOperator<Integer>add=(a,b)->a+b;// UnaryOperator<T>:接受T返回TUnaryOperator<String>upper=s->s.toUpperCase();}}

二、Lambda表达式详解

2.1 Lambda基本用法

// ============================================// Lambda表达式示例// ============================================publicclassLambdaDemo{publicstaticvoidmain(String[]args){List<String>list=Arrays.asList("apple","banana","orange");// 传统写法Collections.sort(list,newComparator<String>(){@Overridepublicintcompare(Stringa,Stringb){returna.compareTo(b);}});// Lambda写法Collections.sort(list,(a,b)->a.compareTo(b));// 方法引用Collections.sort(list,String::compareTo);// forEach遍历list.forEach(s->System.out.println(s));list.forEach(System.out::println);// 方法引用类型// 静态方法引用:ClassName::staticMethod// 实例方法引用:instance::method// 类型方法引用:ClassName::method// 构造方法引用:ClassName::new}}

2.2 方法引用

// ============================================// 方法引用详解// ============================================publicclassMethodReferenceDemo{publicstaticvoidmain(String[]args){// 静态方法引用Function<String,Integer>parser=Integer::parseInt;intnum=parser.apply("123");
http://www.jsqmd.com/news/701610/

相关文章:

  • 上下文工程:让Agent真正用好记忆与知识
  • 3步掌握DJI Cloud API:无人机云端控制从入门到实战 [特殊字符]
  • 【紧急预警】VSCode本地配置正加速过时!2024年头部科技公司已全面切换容器化开发(附迁移ROI测算表)
  • 5分钟快速上手:BiliLocal让本地视频拥有B站弹幕效果的终极指南
  • 番茄小说下载器:免费开源的全能小说获取工具终极指南
  • AgentTeam注入:OpenClaw如何破解串行任务灾难
  • CUDA 13内存模型重大变更(Unified Virtual Memory默认启用):GPU显存泄漏排查效率下降65%?一文掌握3种LLM训练场景下的精准定位法
  • 茉莉花插件:3步解决Zotero中文文献管理的世纪难题
  • SensitivityMatcher:打破游戏壁垒的开源精准匹配工具
  • 2026四川高端婚恋技术解析:四川友爱姐姐婚介、四川友爱姐姐相亲网、四川婚介交友、四川征婚婚介、四川征婚相亲网选择指南 - 优质品牌商家
  • ControlFlow低代码框架:快速构建AI应用的实践指南
  • PyTorch 2.8镜像惊艳效果:4090D+FlashAttention-2实现300%吞吐提升案例集
  • Optional类详解
  • 终极免费方案:如何在浏览器中快速查看Parquet文件?
  • 【仅限头部云厂商内部流出】C++ MCP网关超低延迟配置包:含ebpf流量整形脚本+自适应RCU注册表(限前500名开发者领取)
  • 2026会展包车攻略:这家口碑公司让出行更省心,行业内会展包车聚焦技术实力与行业适配性 - 品牌推荐师
  • 2026年珍珠棉异型材技术解析:成都珍珠棉/气泡膜包装袋/气泡膜卷材/气泡膜厂家/气泡膜口袋/气泡膜片材/珍珠棉卷材/选择指南 - 优质品牌商家
  • 高效视频下载解决方案:VideoDownloadHelper 专业使用指南
  • Agent 的“自我检查清单”:输出前自动审校的工程套路
  • 鸿蒙游戏架构进阶:如何拆分 Store 与 System?
  • STM32驱动ADS8688避坑指南:从SPI配置到多通道数据读取的完整流程
  • AI推理算子加速实战(CUDA 13.1新特性深度解锁):FP16 Tensor Core调度优化+WMMA融合技巧全披露
  • UEViewer技术深度解析:虚幻引擎资源逆向工程的高效解决方案
  • Arthas:Java应用无侵入诊断利器,从原理到实战全解析
  • Beyond Compare密钥生成器技术解析:从逆向工程到自动化授权解决方案
  • wxauto微信自动化终极指南:零基础打造智能聊天机器人
  • AI智能体驱动的自动化文档生成:从原理到工程实践
  • 接口默认方法详解
  • 如何永久保存微信聊天记录?WeChatMsg完整指南助你掌控个人数据主权
  • s2-proGPU部署教程:Docker镜像启动、端口映射与服务自启配置