lambda,Optional,Stream最重要也是最常用

发布时间:2026/10/29 20:03:52

lambda,Optional,Stream最重要也是最常用 这三个是 Java 8 面试里最常被放在一起问的可以按“Lambda 写行为、Stream 处理集合、Optional 处理空值”来记。1. Lambda 表达式作用简化匿名内部类让“一段行为”可以像参数一样传进去。// 传统写法newThread(newRunnable(){Overridepublicvoidrun(){System.out.println(hello);}}).start();// Lambda 写法newThread(()-System.out.println(hello)).start();关键点只能用于函数式接口也就是只有一个抽象方法的接口。常用内置接口PredicateT接收参数返回boolean比如x - x 10FunctionT,R接收 T返回 R比如s - s.length()ConsumerT接收参数无返回值比如s - System.out.println(s)SupplierT无参数返回 T比如() - new User()Lambda 捕获的外部局部变量必须是final或“事实上不可变”。面试可以答Lambda 本质是函数式接口的实例用来简化匿名内部类。2. Stream 流作用对集合做过滤、转换、排序、统计、分组替代繁琐的for循环。ListStringnamesusers.stream().filter(u-u.getAge()18).map(User::getName).sorted().collect(Collectors.toList());三个阶段创建流list.stream()、Stream.of()中间操作filter、map、flatMap、sorted、distinct、limit、skip终止操作forEach、collect、count、reduce、max、min、anyMatch中间操作是“加工”终端操作是“出锅”。filter、map、flatMap、sorted 都在加工collect、count、forEach、findFirst 就是出锅拿结果特点Stream不存储数据只是对数据源做计算。中间操作是惰性求值只有遇到终止操作才会真正执行。Stream不会修改原集合。Stream只能消费一次用完不能再次使用。面试常问map和flatMap区别map是一对一转换flatMap是一对多再扁平化比如ListListString转成ListString。3. Optional作用优雅处理可能为null的值减少if (obj ! null)。OptionalUseruserOptOptional.ofNullable(user);StringnameuserOpt.map(User::getName).orElse(未知);// 通常写法如下少一个变量命名StringnameOptional.ofNullable(user).map(User::getName).orElse(未知名字);常用方法Optional.of(value)值不能为null否则抛异常Optional.ofNullable(value)允许nullisPresent()判断是否有值ifPresent()有值才执行orElse()为空给默认值orElseGet()为空时执行逻辑生成默认值orElseThrow()为空抛异常面试坑点orElse()和orElseGet()区别orElse()无论是否为空都会执行orElseGet()只有为空时才执行。所以orElseGet()更适合生成默认值。面试一句话总结Lambda 简化匿名内部类Stream 做集合流式处理Optional 用来避免空指针。这三个经常一起出现最好各准备一个代码示例。需要我详细讲讲Stream中map和flatMap的区别并写个代码示例帮你理解吗你前面已经基本掌握了这三个东西现在可以按“Lambda 写行为Stream 处理集合Optional 处理空值”来记。速记版概念作用常见写法Lambda简化函数式接口实现(x) - x 10Stream链式处理集合filter / map / collectOptional避免空指针map / orElse / orElseThrow组合示例OptionalStringnameusers.stream().filter(u-u.getAge()18).map(User::getName).findFirst();Stringresultname.orElse(未知用户);这里三个都用上了u - u.getAge() 18是Lambdastream / filter / map / findFirst是StreamfindFirst返回Optional用orElse兜底是Optional。面试高频坑点filter是中间操作不会立即执行collect / count / forEach是终止操作才会真正触发计算。Stream 只能消费一次不能重复使用。map是一对一转换flatMap是一对多再扁平化。Optional.of()传 null 会抛异常Optional.ofNullable()才允许 null。orElse()不管有没有值都会执行orElseGet()只有为空时才执行。Lambda 只能用于函数式接口也就是只有一个抽象方法的接口。如果你是想练代码题可以重点练这几类集合过滤排序、去重统计、分组、转 Map、Optional 链式判空。需要的话我可以直接出几道带答案的练习题。
延伸阅读

更多相关文章

2026/10/29 19:58:52

数据库内核手记 05:B+ 树(下)——删除、迭代器与并发控制

上一篇中,我们从根到叶查找,再通过向上传播的分裂完成插入。现在继续回答三个问题: 删除后节点太空,怎么办?范围查询怎样跨越多个叶子?一个线程正在修改结构,另一个线程怎样安全经过这里&#…

2026/10/29 19:58:52

多相机GigE Vision:触发与图像网段怎么分?

多相机GigE Vision系统里,“触发信号和图像数据走同一网段还是分离”这个问题,容易让人一开始就往“网络冲突”上想。但GigE Vision协议本身已经把这两件事分得很清楚了:GVCP(控制协议)管配置和触发,走UDP …

2026/10/29 21:14:36

智慧农业生菜生长状态检测数据集解析与应用

1. 项目概述:智慧农业生菜生长状态检测数据集 这个数据集是专门为智慧农业场景下生菜生长状态检测任务设计的标准化数据资源包。它包含了4406张高质量的生菜生长过程图像,采用VOC和YOLO两种主流标注格式,覆盖了生菜生长周期的3个关键状态类别…

2026/10/29 21:14:36

ASP图书馆管理代码:借还书事务、并发与权限校验实战

简介:这份ASP图书馆管理代码面向Web开发初学者、课程设计或小型图书馆信息化场景,基于ASP与Access构建一套可运行的图书查询、借阅、归还及后台管理示例,帮助读者理解动态网页与关系型数据库的协作方式,适合课程设计、毕业设计参考…

2026/10/29 21:14:36

Java遥感识别源码解析:地物分类与高标准农田监管实战

简介:基于Java语言实现的高标准农田监管平台遥感监测源码,面向农业IT开发者、遥感算法工程师及智慧农业研究者,解决传统农田监管效率低、地物分类依赖人工等问题。项目采用Maven标准结构,压缩包共26个文件、约28.23MB,…

2026/10/29 21:14:36

eMMC 5.1物理层深度解析:HS400、Boot Partition与EXT_CSD工程实践

简介:本资源为JEDEC官方发布的eMMC 5.1嵌入式存储标准核心文档JESD84-B51(2015年2月修订版),面向嵌入式系统工程师、存储驱动开发人员及硬件设计从业者,解决eMMC接口协议理解、高速模式实现、低功耗管理与ECC/安全机制…

2026/10/29 21:14:36

MAI-Image-2图像生成模型技术解析与应用实践

1. MAI-Image-2技术解析:照片级写实背后的黑科技微软研究院最新发布的MAI-Image-2图像生成模型,在写实类图像生成领域实现了质的飞跃。作为长期从事计算机视觉研究的从业者,我第一时间对官方技术白皮书进行了深度解读。这款模型的核心突破在于…

2026/10/29 21:09:35

ponytail插件:浏览器标签页临时聚合与效率管理指南

1. 从“ponytail”这个标题说起:它到底是什么第一次看到“ponytail”这个词,很多人脑子里浮现的是发型——马尾辫。但在技术圈和效率工具圈里,ponytail 已经悄悄变成了一个代称,指向的是一类“把零散信息扎成一束”的工具思路。它…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑