optional

Java 8 nested null check for a string in a map in a list

℡╲_俬逩灬. 提交于 2021-01-27 11:50:47
问题 I need to do a series of null checks ( nested null-checks ) to get an array of strings like below String[] test; if(CollectionUtils.isNotEmpty(checkList)){ if(MapUtils.isNotEmpty(checkList.get(0))){ if(StringUtils.isNotBlank(checkList.get(0).get("filename"))){ test = checkList.get(0).get("filename").split("_"); } } } Is there a better way, maybe using Java8 Optional, to perform these kind of nested checks? I unsuccessfully tried to use Optional with flatmap / map. 回答1: You could use a long

Java 8 nested null check for a string in a map in a list

谁说胖子不能爱 提交于 2021-01-27 11:46:27
问题 I need to do a series of null checks ( nested null-checks ) to get an array of strings like below String[] test; if(CollectionUtils.isNotEmpty(checkList)){ if(MapUtils.isNotEmpty(checkList.get(0))){ if(StringUtils.isNotBlank(checkList.get(0).get("filename"))){ test = checkList.get(0).get("filename").split("_"); } } } Is there a better way, maybe using Java8 Optional, to perform these kind of nested checks? I unsuccessfully tried to use Optional with flatmap / map. 回答1: You could use a long

【Java 8系列】Stream详解

寵の児 提交于 2021-01-26 08:18:07
热门系列: 【Java 8系列】Java开发者的判空利器 -- Optional 【Java 8系列】Lambda 表达式,一看就废 程序人生,精彩抢先看 目录 1.前言 1.1 为什么要用Stream 1.2 什么是聚合操作 2.正文 2.1 Stream操作分类 2.2 Stream API使用 2.2.1 Stream 构成与创建 2.2.2 无状态(Stateless)操作 2.2.3 有状态(Stateful)操作 2.2.4 短路(Short-circuiting)操作 2.2.5 非短路(Unshort-circuiting)操作 3.总结 1.前言 Java 8的另一大亮点Stream,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。 Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。 Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。 1.1

后端:Java中如何更优雅的处理空值,看完你就懂了!

荒凉一梦 提交于 2021-01-25 08:01:23
导语 在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。 有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。 此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。 业务中的空值 场景 存在一个UserSearchService用来提供用户查询的功能: public interface UserSearchService{ List<User> listUser(); User get(Integer id); } 问题现场 对于面向对象语言来讲,抽象层级特别的重要。尤其是对接口的抽象,它在设计和开发中占很大的比重,我们在开发时希望尽量面向接口编程。 对于以上描述的接口方法来看,大概可以推断出可能它包含了以下两个含义: listUser(): 查询用户列表 get(Integer id): 查询单个用户 在所有的开发中,XP推崇的TDD模式可以很好的引导我们对接口的定义,所以我们将TDD作为开发代码的”推动者”。 对于以上的接口,当我们使用TDD进行测试用例先行时,发现了潜在的问题: listUser() 如果没有数据,那它是返回空集合还是null呢? get(Integer id) 如果没有这个对象,是抛异常还是返回null呢?

吴恩达深度学习学习笔记——C1W2——神经网络基础——作业2——用神经网络的思路实现Logistic回归

谁说胖子不能爱 提交于 2021-01-24 14:30:06
可以明确的说,如果不自己一步步调试作业代码,很难看懂作业内容。 这里主要梳理一下作业的主要内容和思路,完整作业文件可参考: http://localhost:8888/tree/Andrew-Ng-Deep-Learning-notes/assignments/C1W2 作业完整截图,参考本文结尾:作业完整截图。 作业指导及目标 Logistic Regression with a Neural Network mindset(用神经网络的思路实现Logistic回归) Welcome to your first (required) programming assignment! You will build a logistic regression classifier to recognize cats. This assignment will step you through how to do this with a Neural Network mindset, and so will also hone your intuitions about deep learning. Instructions: Do not use loops (for/while) in your code, unless the instructions explicitly ask

《精通并发与Netty》学习笔记(05

我与影子孤独终老i 提交于 2021-01-23 23:38:16
protobuf是由Google开发的一套对 数据结构 进行序列化的方法,可用做通信协议,数据存储格式,等等。其特点是不限语言、不限平台、扩展性强 Netty也提供了对Protobuf的天然支持,我们今天就写一个简单的示例,简单地了解一下Netty对Google的protoBuf的支持 场景设置: 我们的示例场景很简单的:客户端发送一个信息,这个信息用Protobuf来做序列化,然后服务器端接收这个信息,解码,读取信息 protobuf与xml,json这样的数据格式一样,都有自己的一套语法,且语法很简单,很容易掌握,xml文件的后缀名是xml,json的后缀名是json,以此类推,那么protobuf的后缀名就是proto 关于proto的基本语法与Java的bean很像,详细可以参考官网,可以看下这篇博客:http://blog.sina.com.cn/s/blog_9b0604b40101qm35.html 第一步:定义proto文件 现在我们定义一个类似Java bean的proto文件,我们定义一个“富人”类,他有多辆车,我们先按照语法,写一个RichMan.proto,如下面的代码清单所示: package netty; option java_package = "com.lyncc.netty.codec.protobuf.demo" ; option java

mvn dependency:tree 使用详解

亡梦爱人 提交于 2021-01-22 21:13:02
Maven Dependency插件Goal tree分析工程artifacts依赖 来自 https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html 常用Optional Parameters 常用参数,可在命令行中作用 -D参数名=参数值指定 appendOutput:追加输出,而不是覆盖 excludes,includes:通过逗号分离,格式[groupId]:[artifactId]:[type]:[version],支持通配符* outputFile:指定输出文件路径 outputType:指定输出文件格式,默认text,还支持dot,graphml,tgf 输出工程依赖关系 mvn dependency:tree 重定向至文本文件 mvn dependency:tree -D outputFile=dependency_tree.txt mvn dependency:tree -Dverbose -D outputFile=dependency_tree.txt graphml格式,可使用Gephi打开,官网链接 https://gephi.org/ 或者使用yWorks的GraphMLViewer,需要嵌入浏览器中,这个比较小,只有1.1MB,https://www.yworks

Swagger天天用,背后原理来一次深度解析

点点圈 提交于 2021-01-22 17:40:01
先说一说Springfox和Swagger的关系 Swagger 是一种规范。 springfox-swagger 是基于 Spring 生态系统的该规范的实现。 springfox-swagger-ui 是对 swagger-ui 的封装,使得其可以使用 Spring 的服务。 由于工作中遇到需要基于 Swagger Json 做一些处理,但 Swagger Json 的格式不是那么满足需求。 本文springfox-swagger版本号:2.6.0 本文从问题出发,探索涉及的源码。 GET 方法的参数对象 第一个问题,当方法是GET请求,但参数是一个自定义 Object,在展示时(生成的JSON)是不包括本 Object 描述的。所以,就要看看什么时候会生成这些 Model 的描述。 万事有始有终,SpringFox始就在:springfox.documentation.spring.web.plugins下的 DocumentationPluginsBootstrapper。 该类实现了 SmartLifecycle 接口,实现此接口且通过@Component注入到容器的bean, 容器初始化后会执行start()方法. @Component public class DocumentationPluginsBootstrapper implements

Python001-Turtle(海龟绘图)详解

血红的双手。 提交于 2021-01-21 11:35:32
一、简介 Turtle库是Python语言中的一个绘制图像的函数库。 详细文档: https://docs.python.org/zh-cn/3/library/turtle.html 二、使用 1.画布设置(canvas) (1)设置画布大小 turtle.screensize(canvwidth=None, canvheight=None, bg=None) 参数分别为画布的宽(单位像素), 高, 背景颜色;turtle.screensize() ,返回默认大小(400, 300)。 turtle.setup(width=0.5, height=0.75, startx=None, starty=None) 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。 2. 画笔设置 (1)设置画笔的属性 turtle.pensize() 设置画笔的宽度; turtle.pencolor() 传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组;若没有参数传入,则返回当前画笔颜色;、 turtle.speed(speed) 设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

Java 8 collect() only isPresent() Optional values [duplicate]

江枫思渺然 提交于 2021-01-21 00:45:34
问题 This question already has answers here : Using Java 8's Optional with Stream::flatMap (12 answers) Closed 4 years ago . Is there a more elegant way of practically achieving this in Java 8? list.stream() .map(e -> myclass.returnsOptional(e)) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList()); I'm talking about filter(Optional::isPresent) followed by map(Optional::get) , I want to elegantly collect in a list only Optional results which have a value. 回答1: In your case