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块中最好不能有返回值。
Reports finally blocks which can not complete normally.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java map是大括号_Java8如何基于flatMap处理异常函数相关推荐
- 【POI xls Java map】使用POI处理xls 抽取出异常信息 --java1.8Group by ---map迭代 -- 设置单元格高度...
代码处理逻辑: 代码流程: 1.首先需要创建一个实体 用来存储 相关信息 1 package com.sxd.test.unusualName; 2 3 public class NameEntity ...
- BAT Java面试笔试33题:JavaList、Java Map等经典面试题!答案汇总!
JavaList面试题汇总 1.List集合:ArrayList.LinkedList.Vector等. 2.Vector是List接口下线程安全的集合. 3.List是有序的. 4.ArrayLis ...
- Java Map中那些巧妙的设计
简介: 他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是专注于"点",并没有连成"线", ...
- java map转string_【库学科技】32道常见的Java基础面试题
内容来源于图灵 侵删. 什么是 Java 虚拟机(JVM)?为什么 Java 被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Jav ...
- Java Map中那些巧妙的设计
最近拜读了一些Java Map的相关源码,不得不惊叹于JDK开发者们的鬼斧神工.他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是 ...
- Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包
在上篇文章中Java抓包分析三(基于jnetpcap进行抓包)--抓取Http请求数据包,我们讲解了TCP三次握手的过程和如何抓取Http数据包,但是我们并没有进行一个数据分析,接下来这篇文章我们将要 ...
- java map集合的等号改为逗号_老司机用一篇博客带你快速熟悉Dart语法
[前言]Dart语言是使用flutter框架开发时候必备的语言,flutter是一个跨平台的框架,一套代码就可以完美实现安卓和ios两个平台,适配也很不错,Dart语言很友好,和java很类似,学习成 ...
- Java Map集合的详解
参考自:Java Map集合的详解 (略有修改) 一,Map 如果程序中存储了几百万个学生,而且经常需要使用学号来搜索某个学生,那么这个需求有效的数据结构就是Map. Map是一种依照键(key)存储 ...
- 微信公众号-java上传图片素材到微信服务器基于事件推送两条消息
微信公众号-java上传图片素材到微信服务器&基于事件推送两条消息 场景:基于微信扫码登录/关注事件,向用户推送两条消息. 分析:翻阅了微信开发者文档和一些其他资料发现,公众号针对用户关注/扫 ...
最新文章
- 论文推荐 | 目标检测中不平衡问题算法综述
- 快速指南:在DevOps中实现持续交付
- 递归查询mysql数据库设计
- 关于Android中工作者线程的思考
- linux 虚拟机挂载本地,CentOS 在VMWare中挂载本地yum源
- winCE下Unicode编码
- Ⅴ0还有别的方法设置图案吗_定制汽车硅胶按键你知道厂家是怎么给汽车按键镭雕的吗...
- 若依如何去掉“正在加载系统资源,请耐心等待”
- Android Lint 检查规则的定制(基本篇)
- YTU 2837: 编程题B-狐狸算卦
- 基于RabbitMQ RPC实现的主机异步管理
- Deadline调度器之(二):细节和使用方法
- mysql 分隔字符串的函数_Mysql 字符串分隔函数
- 态势感知平台分析流程
- x86_64-w64-mingw32/bin/ld.exe: cannot find -lmsvcrt
- 解决WIN10家庭版无法远程桌面连接的问题
- 基于Java语言实现全国交通咨询模拟
- 这就是数学的魅力?QWQ
- LOJ3124 CTS2019 氪金手游 概率、容斥、树形DP
- C语言学习2:Hello World!详解
热门文章
- 那个悲伤的朋友,去了一趟菜场竟然活过来了
- 【转载保存】RunTime.getRunTime().addShutdownHook 添加钩子
- 判断子字符串是否出现在主字符串内
- 机器学习——决策树的实现
- LPTSTR、LPCSTR、LPCTSTR、LPSTR的区别
- spark异常 - Null value appeared in non-nullable field
- 一线技术人的成长思考总结
- 各位 PHPer,Serverless 正当时
- 阿里云边缘云ENS再升级 四大场景应用加速产业数字化落地
- MYSQL深潜 - 剖析Performance Schema内存管理