Java8 Optional 怎么用

2020-04-10 15:56:01 +08:00
 sandman511
Optional<Map<String, Object>> studentMapOpt = 
	studentList.stream().filter(x -> x.get("gender").equals("male")).findFirst();

if (studentMapOpt.isPresent()) {
	String studentName = studentMapOpt.get().get("studentName").toString();
    	......
    	......
}

我这样用感觉怪怪的,跟 if else 没啥区别啊...
请教下大家正确用法是怎么用的
我在不同时期一共看过 Optional 的用法了...就是理解不了...

2998 次点击
所在节点    程序员
21 条回复
acr0ss
2020-04-11 10:19:13 +08:00
Optional/Stream 主要是为了可读性。
如果代码中分支流程( if/else )越多,那么理解起来就越困难,换言之可读性差。
而使用 Optional/Stream,可以规避 if/else 的判断(楼上多人都给出了写法)。这会使代码的整体结构,看着就像多个函数组成的一个过程,便于理解代码的主要逻辑。

如果说 if/else 的分支判断理解为流程图,那么 Optional/Stream 写法是将流程图的**主线流程**提取出来,提高可读性。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661200

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX