《Java工程师必读手册》——Java极客主义系列——Java代码精简之道(6)

简介: 《Java工程师必读手册》——Java极客主义系列——Java代码精简之道(6)

接上篇:https://developer.aliyun.com/article/1227322?spm=a2c6h.13148508.setting.17.48e04f0eaBVGWH


六、 利用数据结构

 

1. 利用数组简化

 

对于固定上下限范围的if-else语句,可以用数组+循环来简化。

 

普通

 

image.png 

 

精简

 

image.png 

 

思考

上面的案例返回值是递增的,所以用数组简化是没有问题的。但是,如果返回值不是递增的,能否用数组进行简化呢?答案是可以的,请自行思考解决。

 

2. 利用Map简化

 

对于映射关系的if-else语句,可以用Map来简化。此外,此规则同样适用于简化映射关系的switch语句。

 

普通

 

image.png 

 

精简

 

image.png 

 

已经把方法简化为一行代码,其实都没有封装方法的必要了。

 

 

 

 

3. 利用容器类简化

 

Java不像Python和Go,方法不支持返回多个对象。如果需要返回多个对象,就必须自定义类,或者利用容器类。常见的容器类有Apache的Pair类和Triple类,Pair类支持返回2个对象,Triple类支持返回3个对象。

 

普通

 

image.png 

 

精简

 

image.png

 

4. 利用ThreadLocal简化

 

ThreadLocal提供了线程专有对象,可以在整个线程生命周期中随时取用,极大地方便了一些逻辑的实现。用ThreadLocal保存线程上下文对象,可以避免不必要的参数传递。

 

 

 

 

普通

 

由于DateFormat的format方法线程非安全(建议使用替代方法),在线程中频繁初始化DateFormat性能太低,如果考虑重用只能用参数传入DateFormat。例子如下:

 

image.png 

 

精简

 

可能你会觉得以下的代码量反而多了,如果调用工具方法的地方比较多,就可以省下一大堆DateFormat初始化和传入参数的代码。

 

image.png 

 

注意

ThreadLocal有一定的内存泄露的风险,尽量在业务代码结束前调用remove方法进行数据清除。


 接下篇:https://developer.aliyun.com/article/1227319?groupCode=java

相关文章
|
18天前
|
Java 测试技术 应用服务中间件
常见 Java 代码缺陷及规避方式(下)
常见 Java 代码缺陷及规避方式(下)
47 0
|
20天前
|
Java
Java中ReentrantLock释放锁代码解析
Java中ReentrantLock释放锁代码解析
25 8
|
21天前
|
设计模式 存储 Java
23种设计模式,备忘录模式的概念优缺点以及JAVA代码举例
【4月更文挑战第9天】备忘录模式是一种行为设计模式,它能在不破坏对象封装的前提下,捕获并保存对象的当前状态,以便后面可以恢复到这个状态。
26 0
|
5天前
|
SQL Java 数据库
java代码中调用dao层查询接口,代码没有返回数据,打印出的sql查出了数据
java代码中调用dao层查询接口,代码没有返回数据,打印出的sql查出了数据
10 1
|
5天前
|
安全 Java 开发者
Java编程:深入探索其原理、特性与实战代码
Java编程:深入探索其原理、特性与实战代码
10 1
|
6天前
|
存储 算法 Java
滚雪球学Java(20):Java泛型与枚举:提升代码灵活性与可读性
【4月更文挑战第9天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
19 1
滚雪球学Java(20):Java泛型与枚举:提升代码灵活性与可读性
|
9天前
|
Java 测试技术 持续交付
云效产品使用常见问题之通过流水线构建的java代码,在docker文件里拿到失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
15天前
|
Java 测试技术
滚雪球学Java(12):JavaSE-if条件语句入门指南:掌握代码分支流程!
【4月更文挑战第1天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
50 1
滚雪球学Java(12):JavaSE-if条件语句入门指南:掌握代码分支流程!
|
17天前
|
人工智能 Kubernetes Java
Java开发工程师如何紧跟技术前沿对于保持专业竞争力、提升工作效率以及适应行业发展?
【4月更文挑战第4天】Java开发工程师如何紧跟技术前沿对于保持专业竞争力、提升工作效率以及适应行业发展?
22 4
|
18天前
|
Java
与JShell一起舞动代码的魔法:Java9交互式编程体验
与JShell一起舞动代码的魔法:Java9交互式编程体验
31 0