map和flatMap的区别
转自:
http://www.java265.com/JavaCourse/202206/3666.html
Optional 类简介:
Java8 新增了非常多的特性,而Optional 类就是其中一个新增的类
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常
下文笔者讲述Optional类中map和flatMap的区别说明,如下所示
map和flatMap的区别
map方法:接受一个映射函数参数,返回一个被Optional包装的结果。若结果为空,则返回 空Optional
flatMap方法:接受一个返回值为Optional的映射函数参数,该返回值亦是flatMap方法的返回值
若结果为空,则返回 空Optional。
例
public class User { String name; Integer age; public User(){ } public User(String name, Integer age){ this.name = name; this.age = age; } ... // getter setter } @Test void mapOptionalTest(){ User user = new User("java265.com",88); Optional<Optional<String>> optionalOptional = Optional.ofNullable(user).map(this::getName); Optional<String> mapOptional = Optional.ofNullable(user).map(s -> s.getName()); Optional<String> flatOptional = Optional.ofNullable(user).flatMap(this::getName); } private Optional<String> getName(User user){ return Optional.ofNullable(user).map(s -> s.getName()); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通