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

桂林腾达网是什么网seo搜索推广费用多少

桂林腾达网是什么网,seo搜索推广费用多少,wordpress zzt,域名的网站建设方案书怎么写Java 8引入的Optional和Stream彻底改变了我们处理空值和集合操作的方式。本文将深入探讨如何将二者结合使用,通过四个核心场景提升代码的健壮性和简洁性。 一、Optional构成的Stream:空值自动过滤 当处理Optional集合时,我们常需要过滤掉空…

Java 8引入的OptionalStream彻底改变了我们处理空值和集合操作的方式。本文将深入探讨如何将二者结合使用,通过四个核心场景提升代码的健壮性和简洁性。

一、Optional构成的Stream:空值自动过滤

当处理Optional集合时,我们常需要过滤掉空值并提取有效元素:

List<Optional<String>> options = Arrays.asList(Optional.of("Java"),Optional.empty(),Optional.of("Python")
);// 传统方式
List<String> values = options.stream().filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());// 更优雅方式
List<String> improved = options.stream().flatMap(Optional::stream)  // Java 9+.collect(Collectors.toList());

flatMap(Optional::stream)会自动展开非空Optional,等价于:

.flatMap(opt -> opt.map(Stream::of).orElseGet(Stream::empty))

二、安全解引用:默认值策略

避免直接使用get(),优先考虑安全解引用方式:

Optional<User> userOpt = findUserById(123);// 不安全方式(可能抛出NoSuchElementException)
User risky = userOpt.get();// 安全方式1:提供默认值
User safeUser = userOpt.orElse(new User("Guest"));// 安全方式2:延迟计算默认值
User efficientUser = userOpt.orElseGet(() -> createGuestUser());or与orElseGet方法很像,or不会解包Optional对象的值,,这一方法 9引入,不会执行其它操作,直接返回Optional对象;如果原始Optional对象为空,该方法会延迟返回一个不同的Optional对象。orElseThrow和get方法相似, Optional对象为空抛出一个异常,orElseThrow可以定制希望抛出的异常。// 安全方式3:条件消费
userOpt.ifPresentOrElse(user -> processUser(user),() -> log.warn("User not found")
);

三、Optional组合运算:安全的值组合

当需要组合多个Optional值时,可采用函数式组合:

Optional<Integer> width = Optional.of(1920);
Optional<Integer> height = Optional.of(1080);// 方式1:嵌套map(Java 8)
Optional<Resolution> res = width.flatMap(w -> height.map(h -> new Resolution(w, h))
);// 方式2:使用Tuple包装(更灵活)
record Tuple2<A,B>(A a, B b) {}
Optional<Tuple2<Integer, Integer>> dimensions = width.flatMap(w ->height.map(h -> new Tuple2<>(w, h))
);// 方式3:自定义zip方法
public static <A,B> Optional<Pair<A,B>> zip(Optional<A> a, Optional<B> b) {return a.flatMap(aVal -> b.map(bVal -> Pair.of(aVal, bVal)));
}

四、精准过滤:Optional.filter应用

在值提取前进行条件过滤:

Optional<String> emailOpt = getEmailFromRequest();// 基础过滤:非空且包含@
Optional<String> validEmail = emailOpt.filter(e -> e.contains("@"));// 组合条件过滤
Optional<Employee> manager = findEmployee(id).filter(emp -> emp.getRole().equals(Role.MANAGER)).filter(emp -> emp.getProjects().size() > 3);// 链式操作示例
String result = Optional.ofNullable(rawInput).filter(s -> !s.isBlank()).map(String::trim).filter(s -> s.length() >= 6).orElse("default");

最佳实践总结

  1. 防御性编程:始终假设Optional可能为空
  2. 早过滤原则:优先在Stream管道起始处处理空值
  3. 避免嵌套地狱:通过flatMap保持代码扁平化
  4. 语义明确:使用orElse/orElseGet明确表达空值处理策略
  5. 不变性原则:Optional应始终视为不可变容器

通过合理运用这些模式,可以使代码:

  • 减少90%以上的NullPointerException
  • 提高业务逻辑的可读性
  • 增强数据流处理的健壮性
  • 降低维护复杂度
http://www.dtcms.com/wzjs/396283.html

相关文章:

  • 凡客网站建立百度搜索风云榜单
  • 成都网站建设 培训班2023网站seo
  • 南宁手机平台网站百度指数分是什么
  • 昌吉州住房和城乡建设局网站阿里云建网站
  • 网站上百度要怎么做的迅雷磁力链bt磁力天堂
  • 旅游景区宣传软文seo排名赚下载
  • 设计素材网站酷p哪家公司做推广优化好
  • 未来的门户网站重庆二级站seo整站优化排名
  • 苏州做网站优化哪家好宁波关键词网站排名
  • 帝国cms做中英文网站网上营销网站
  • 信用平台网站建设建议2022最新永久地域网名
  • asp 网站 购物车sem竞价课程
  • Wordpress 建站 软件网址域名查询
  • 自学html做网站要多久下载百度 安装
  • 怎么做网站的学校的大图可口可乐软文营销案例
  • 十大室内设计师排名页面seo优化
  • 珠海做网站需要多少钱百度明星人气榜
  • wordpress bt 插件天津网站seo设计
  • 长春开发小程序开发虞城seo代理地址
  • 寺庙网站模板营销推广的工具有哪些
  • app企业网站模板免费下载海东地区谷歌seo网络优化
  • 安居客二手房出售信息seo网站优化培训价格
  • 云岭建设集团的网站网站模板哪家好
  • 山西省建设厅网站首页seo网络排名优化
  • 大连企业网站semi
  • 装修公司加盟 招商加盟深圳网站优化公司
  • 网站开发制作费入会计科目清远头条新闻
  • wordpress建站好用吗代发广告平台
  • 公司网站设计 上海营销推广活动策划书模板
  • 电商运营真的有出路吗百度seo优化多少钱