「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」。
最近公司在大张旗鼓的进行代码审核,从中也发现自己写代码的不好习惯。一次无意的点到了公司封装的对map集合过滤的方法,发现了stream。于是研究了一下。并对原有的代码再次结合Optional进行重构下
原有方法说明
主要处理过滤条件Map对象,过滤掉了null和空字符串 等操作
- 1.利用filter对null和空字符串进行过滤
- 2.利用map进行对于Stream中包含的元素使用给定的转换函数进行转换操作
- 3.collect进行聚合成map
由于公司的代码不合适自己展示,我这里自己仿照公司的写了个类似的简单方法,然后一步一步优化
自定义map工具类处理方法
1 | typescript复制代码//这里的代码和原先的代码相比做了修改,去掉了map进行对于Stream中包含的元素使用给定的转换函数进行转换操作 |
测试下
1 | csharp复制代码 public static void main(String[] args) { |
输出结果
1 | ini复制代码{c=c} |
优化parseMapForFilter 方法,加入Optional类
1 | scss复制代码public static Map<String, Object> parseMapForFilterByOptional(Map<String, Object> map) { |
是不是感觉更清晰了呢?
测试一下
1 | csharp复制代码 public static void main(String[] args) { |
结果
1 | ini复制代码{c=c} |
优化checkValue方法
1 | typescript复制代码 private static boolean checkValueByOptional(Object object) { |
总结
大家是不是感觉lambda 写法更加简单明了,不再充满着if判断。但如果大家首写的时候,肯定感觉不习惯,我刚开始写的时候,也是很别扭,根本不知道怎么写。一点点去尝试。更多细节基础的问题这里不再叙述。
只是感觉这个对map的处理还是很好的。并且实际工作中用到的地方比较多。
本文转载自: 掘金