接上篇:https://developer.aliyun.com/article/1227322?spm=a2c6h.13148508.setting.17.48e04f0eaBVGWH
六、 利用数据结构
1. 利用数组简化
对于固定上下限范围的if-else语句,可以用数组+循环来简化。
普通:
精简:
思考
上面的案例返回值是递增的,所以用数组简化是没有问题的。但是,如果返回值不是递增的,能否用数组进行简化呢?答案是可以的,请自行思考解决。
2. 利用Map简化
对于映射关系的if-else语句,可以用Map来简化。此外,此规则同样适用于简化映射关系的switch语句。
普通:
精简:
已经把方法简化为一行代码,其实都没有封装方法的必要了。
3. 利用容器类简化
Java不像Python和Go,方法不支持返回多个对象。如果需要返回多个对象,就必须自定义类,或者利用容器类。常见的容器类有Apache的Pair类和Triple类,Pair类支持返回2个对象,Triple类支持返回3个对象。
普通:
精简:
4. 利用ThreadLocal简化
ThreadLocal提供了线程专有对象,可以在整个线程生命周期中随时取用,极大地方便了一些逻辑的实现。用ThreadLocal保存线程上下文对象,可以避免不必要的参数传递。
普通:
由于DateFormat的format方法线程非安全(建议使用替代方法),在线程中频繁初始化DateFormat性能太低,如果考虑重用只能用参数传入DateFormat。例子如下:
精简:
可能你会觉得以下的代码量反而多了,如果调用工具方法的地方比较多,就可以省下一大堆DateFormat初始化和传入参数的代码。
注意:
ThreadLocal有一定的内存泄露的风险,尽量在业务代码结束前调用remove方法进行数据清除。
接下篇:https://developer.aliyun.com/article/1227319?groupCode=java