java map是大括号_Java8如何基于flatMap处理异常函数

Java8的flatMap函数,作用是:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional。

见到的映射函数往往都只有一句话,连大括号都不需要加的,如下:

String personValue = Optional.ofNullable(map.get("person"))

.flatMap(value -> Optional.of(value.toString().trim()))

.orElse("");

可是如果映射函数里,可能会抛出异常,该怎么办?

方法也是使用try/catch,但是一定要有返回值return,返回值类型是Optional。

public static void main(String[] args) {

Map map = new HashMap<>();

String value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

System.out.println(value);

map.put("time",value);

//原来的实现方法是

String timeValue = "";

if(map.get("time") != null){

try {

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(map.get("time").toString().trim());

timeValue = new SimpleDateFormat("yyyy年MM月dd日").format(date);

} catch (ParseException e) {

e.printStackTrace();

}

}

System.out.println(timeValue);

//使用Java8的实现方法是

String timeValue2 = Optional.ofNullable(map.get("time"))

.flatMap(value2 -> {

String ans = "";

try {

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value2.toString().trim());

ans = new SimpleDateFormat("yyyy年MM月dd日").format(date);

} catch (ParseException e) {

e.printStackTrace();

}

return Optional.of(ans);

}) .orElse("");

System.out.println(timeValue2);

}

上诉方法中, 可以把flatMap改成map,但是返回值的类型就不能是Optional了。应该是返回的值会自动被包装成Optional的。

//使用Java8的实现方法是

String timeValue2 = Optional.ofNullable(map.get("time"))

.map(value2 -> {

String ans = "";

try {

Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value2.toString().trim());

ans = new SimpleDateFormat("yyyy年MM月dd日").format(date);

} catch (ParseException e) {

e.printStackTrace();

}

return ans;

}) .orElse("");

System.out.println(timeValue2);

这样看起来,使用lambda表达式,代码并没有优化多少啊?

应该是没有了null的判断,人们似乎很在意这个代码中不能有null这个词的说。

如果最后改成finally块,IDEA会出现警告,虽然结果没问题。这是因为finally块中最好不能有返回值。

f66c372edaca39b4ccc4d0278ea21a1a.png

Reports finally blocks which can not complete normally.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 赛道“新选手”锐捷发布新一代 AI SaaS 云平台,支撑百万级零售货柜

编辑 | 宋慧 出品 | CSDN 云计算 头图 | 付费下载于 IC photo 近几年&#xff0c;传统零售模式经历了几轮深层次变革&#xff0c;2016 年是新零售的元年&#xff0c;2017 年无人零售在国内又刮起了一阵大风&#xff0c;从传统零售到新零售再到无人零售等概念的革新&#xff0c…

2019 年 CNCF 中国云原生调查报告

简介&#xff1a; 在 CNCF&#xff0c;为更好地了解开源和云原生技术的使用&#xff0c;我们定期调查社区。这是第三次中国云原生调查&#xff0c;以中文进行&#xff0c;以便更深入地了解中国云原生技术采用的步伐及如何在庞大且不断发展的社区中赋能开发者并作出变革。本报告…

快手基于 Apache Flink 的优化实践

本次由快手刘建刚老师分享&#xff0c;内容主要分为三部分。首先介绍流式计算的基本概念&#xff0c; 然后介绍 Flink 的关键技术&#xff0c;最后讲讲 Flink 在快手生产实践中的一些应用&#xff0c;包括实时指标计算和快速 failover。 一、流式计算的介绍 流式计算主要针对 u…

探索交通治理新思路,广州黄埔智能交通治“堵”

路口车辆平均延误下降20%、主干道平均行程时间下降25%、有轨电车每趟行程时间节省约28%……随着政府科学管理与人工智能技术的结合&#xff0c;广州黄埔越来越多交通路口正在逐渐AI化&#xff0c;市民出行效率得以大幅提升。在共建共治共享理念指导下&#xff0c;广州黄埔正在拓…

Flink 双流 Join 的3种操作示例

在数据库中的静态表上做 OLAP 分析时&#xff0c;两表 join 是非常常见的操作。同理&#xff0c;在流式处理作业中&#xff0c;有时也需要在两条流上做 join 以获得更丰富的信息。Flink DataStream API 为用户提供了3个算子来实现双流 join&#xff0c;分别是&#xff1a; join…

云原生趋势下的迁移与容灾思考

作者 | 孙琦 导读&#xff1a;下一个云原生颠覆的领域会不会是在传统的容灾领域呢&#xff1f;在云原生的趋势下&#xff0c;如何构建应用系统的迁移与容灾方案&#xff1f; 趋势 1. 云原生发展趋势 云原生&#xff08;Cloud Native&#xff09;是最近几年非常火爆的话题&…

深度盘点Python11个主流框架:Pandas、Django、Matplotlib、Numpy、PyTorch......

六月份TIOBE编程语言排行榜&#xff0c;位居第二名的Python与第一名C语言之间的差距正在逐渐缩小。Python如此受欢迎一方面得益于它崇尚简洁的编程哲学&#xff0c;另一方面是因为强大的第三方库生态。要说杀手级的库&#xff0c;很难排出个先后顺序&#xff0c;因为python的明…

从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目

2020 年 11 月 19 日&#xff0c;由 InfoQ 主办的“2020 中国技术力量年度榜单盛典”隆重召开&#xff0c;并正式揭晓了“开源杰出贡献人物”、“开源新锐项目”和“云原生行业落地典范”等重大奖项。在此前的入围赛中&#xff0c;仅“开源新锐项目”单项&#xff0c;阿里云原生…

揭秘双11丝滑般剁手之路背后的网络监控技术

简介&#xff1a; 本篇将重点介绍Hologres在阿里巴巴网络监控部门成功替换Druid的最佳实践&#xff0c;并助力双11实时网络监控大盘毫秒级响应。 概要&#xff1a;刚刚结束的2020天猫双11中&#xff0c;MaxCompute交互式分析&#xff08;下称Hologres&#xff09;实时计算Flin…

OpenKruise:阿里巴巴 双11 全链路应用的云原生部署基座

简介&#xff1a; Kruise 是 Cruise 的谐音&#xff0c;K for Kubernetes&#xff0c;寓意 Kubernetes 上应用的航行和自动巡行&#xff0c;它满载着阿里巴巴多年在大规模应用部署、发布与管理最佳实践&#xff0c;以及阿里云 Kubernetes 服务数千客户的需求沉淀。 来源 | 阿里…

AI 如何推动双碳目标达成?施耐德电气这么说

以当前的排放总量而言&#xff0c;中国是全球碳排放第一大国。如何兼顾经济转型与能源低碳转型成为国家重要的发展战略之一&#xff0c;因此中国提出 2030 年碳达峰以及 2060 年碳中和的目标&#xff0c;并被写进《政府工作报告》中&#xff0c;成为各行各业关注的热点话题。 …

轻松玩转全链路监控

简介&#xff1a; 好的产品总是能给予用户最轻松的使用体验&#xff0c;并在实际生产中发挥出巨大的业务价值。我们不妨从现在开始&#xff0c;就将所有微服务应用通过无侵入的方式接入ARMS&#xff0c;构建一体化的全链路监控体系&#xff0c;而不是等到真正遇到生产故障的那一…

深度解读 MongoDB 最全面的增强版本 4.4 新特性

MongoDB 在今年正式发布了新的 4.4 大版本&#xff0c;这次的发布包含众多的增强 Feature&#xff0c;可以称之为是一个维护性的版本&#xff0c;而且是一个用户期待已久的维护性版本&#xff0c;MongoDB 官方也把这次发布称为「User-Driven Engineering」&#xff0c;说明新版…

四大招让无处不在的工作空间成为可能?揭秘Ivanti 的战略布局

如今二维码已成为我们生活、工作的“必需品”&#xff0c;大家往往会通过简单扫码获取内容信息或进行交易。受疫情的影响&#xff0c;人们对非接触式交易需求增多&#xff0c;二维码的应用场景更无处不在。 与此同时&#xff0c;二维码带来的安全问题也受到人们的关注&#xf…

深度| 每秒1.4亿次!再度刷新TPS记录的PolarDB如何应对双11“尖峰时刻”?

2020年是云原生数据库PolarDB全面支撑天猫双十一的第二年&#xff0c;天猫交易、买家、卖家以及物流等系统在双十一期间基于PolarDB为亿万客户提供了顺滑的体验。同时&#xff0c;PolarDB还刷新了去年由自己创造的数据库处理峰值&#xff08;TPS&#xff09;纪录&#xff0c;今…

Hologres是如何完美支撑双11智能客服实时数仓的?

简介&#xff1a; 本文重点介绍Hologres如何帮助阿里巴巴客户体验部&#xff08;CCO&#xff09;&#xff0c;构建集实时化、自助化、系统化于一体的用户体验实时数仓&#xff0c;完美助力双11场景&#xff0c;支持上千服务大屏&#xff0c;削峰30%&#xff0c;节约成本近30%。…

云原生与AI时代的存储该是什么样?新华三发布全NVMe智能闪存与智慧中枢数据平台

编辑 | 宋慧 出品 | CSDN云计算 7月8日&#xff0c;紫光股份旗下新华三集团以“智以致用速达未来”为主题&#xff0c;召开“2021新华三存储新品发布会”&#xff0c;重磅推出云智原生的新一代端到端NVMe闪存存储H3C/HPE Alletra、分布式融合存储H3C UniStor X10000&#xff0…

java客户端程序用什么自动化测试_五大Java自动化测试框架

51CTO官微技术资讯/行业精华/产品心得多年来&#xff0c;Java一直是服务器端应用开发的首选编程语言。随着时间的推移和自动化测试的兴起&#xff0c;业界出现了许多基于Java&#xff0c;并根据不同的业务逻辑而发展起来的开源框架。在此&#xff0c;我向大家介绍并比较五种用到…

微服务框架Go-Micro集成Nacos实战之服务注册与发现

简介&#xff1a; 本文主要介绍如何使用 Golang 生态中的微服务框架 Go-Micro(v2) 集成 Nacos 进行服务注册与发现。(Go-Micro 目前已经是 v3 版本&#xff0c;但由于某些原因项目已经更名为 nitro 具体原因大家可以去 github 中查看) 相关背景知识 Go-Micro Go Micro 是一个…

「深度学习知识体系总结(2021版)」开放下载了!

随着世界技术的迭代与发展&#xff0c;人工智能和机器学习正在超自动化领域&#xff0c;扮演着越来越重要的角色。2020年的冠状病毒疫情突发&#xff0c;整个世界都在防疫的道路上披荆斩棘。人工智能发挥了重大作用&#xff0c;智能测温、智能消毒、智能建设都能看到AI的影子。…