Java优化if-else代码的实战记录
作者:jeremylai7 发布时间:2023-05-16 22:55:18
标签:java,优化,if-else
目录
前言
方案一: 数组
方案二:HashMap
由 key 获取 value
由 value 获取 key
解决方案三:枚举
总结
前言
开发系统一些状态,比如订单状态:数据库存储是数字或字母,但是需要显示中文或英文,一般用到if-else代码判断,但这种判断可读性比较差,也会影响后期维护,也比较容易出现bug。比如:
假设状态对应关系:1:agree 2:refuse 3:finish
int status;
String statusStr = null;
if (status == 1) {
status = "agree";
} else if (status == 2) {
status = "refuse";
}else if(status == 3) {
status = “finish”;
}
方案一: 数组
这种仅限通过数字获取到字母或者中文。
首先设置数组
String[] statusArray = {"","agree","refuse","finish"};
通过数组的位置获取数组的值
int status;
String statusStr = statusArray[status];
优点: 占用内存少
缺点: 状态值只能是数字,而且还需要考虑数组越界情况
方案二:HashMap
创建和添加map:
private static final Map<Integer,String> map = new HashMap<>();
static {
map.put(1,"agree");
map.put(2,"refuse");
map.put(3,"finish");
}
这种有两种求解方式,通过 key 获取 value 以及通过 value 获取 key,
由 key 获取 value
直接使用 get 方法即可。这里的key相对于数组解法,不限制 key 的类型。
int status;
map.get(status);
由 value 获取 key
使用map遍历:
int status;
for(Map.Entry<Integer, String> vo : map.entrySet()){
if (vo.getValue().equals(result)) {
status = vo.getKey();
break;
}
}
优点:状态值不限制数字
缺点:占用空间大
解决方案三:枚举
先定义一个枚举类
public enum TestEum {
agree(1,"agree"),
refuse(2,"refuse");
private int code;
private String capation;
TestEum(int code,String capation){
this.code = code;
this.capation = capation;
}
public int getCode() {
return code;
}
public String getCapation() {
return capation;
}
String of(int code){
for (TestEum testEum : TestEum.values()) {
if (testEum.getCode() == code) {
return testEum.getCapation();
}
}
return null;
}
}
有了枚举以后,if-else 代码块可以优化成一行代码
String statusStr = TestEum.of(status);
总结
如果通过数字获取描述,使用数组即可。
如果通过描述获取数字,使用枚举和HashMap都可以。
来源:https://segmentfault.com/a/1190000040691517


猜你喜欢
- 本文为大家介绍了FTP上传下载队列窗口的实现方法,供大家参考,具体内容如下1、首先看一下队列窗口的界面2、看一下上传队列窗口的界面3、看一下
- 单元测试是编写测试代码,应该准确、快速地保证程序基本模块的正确性。JUnit是Java单元测试框架,已经在Eclipse中默认安装。JUni
- 可以使用 graphics2D 类提供的 shear(
- 背景产品想对多次快速点击做一下优化,想要的效果就是双击不会打开多次但是从开发角度来说,我可以用kotlin的拓展方法来调整这个,但是之前的历
- Android Intent调用 Uri的方法总结//调用浏览器Uri uri = Uri.parse(""); Int
- java 多线程的几种实现方法总结1.多线程有几种实现方法?同步有几种实现方法?多线程有两种实现方法,分别是继承Thread类与实现Runn
- 激活码:9MWZD5CC4E-eyJsaWNlbnNlSWQiOiI5TVdaRDVDQzRFIiwibGljZW5zZWVOY
- 本文实例讲述了C#敏感词过滤实现方法。分享给大家供大家参考。具体如下:这两天突然想到了敏感词过滤 就结合网上找到的资料自己写了一个,脏字数量
- 具体可见http://developer.android.com/tools/debugging/ddms.html。 DDMS为IDE和e
- 所谓的浮动工具栏,效果图如下:也就是说,可以将工具栏拖出其原先的停靠位置,而且可以将拖出来的工具栏再拖放回去。实现的基本思路如下1、拖动出来
- 常用配置ObjectMapper objectMapper = new ObjectMapper();objectMapper.config
- 本文实例讲述了Android实现在一个activity中添加多个listview的方法。分享给大家供大家参考,具体如下:listview的i
- 前言SSL Socket通讯是对socket的扩展,增加Socket通讯的数据安全性,SSL认证分为单向和双向认证。单向认证只认证服务器端的
- 一、 代码块的概念在探究对象初始化顺序之前,我们先通过代码来了解一下代码块的概念。class Test{ public stat
- 什么是抽象类什么是抽象类呢?抽象类顾名思义就是很抽象,就是当我们没有足够的信息去描述这个类的时候我们就可以先不用描述,这样的类就是抽象类。用
- 在 Servlet/Jsp 项目中,如果涉及到系统任务,例如在项目启动阶段要做一些数据初始化操作,这些操作有一个共同的特点,只在项目启动时进
- spring boot metrics是什么?针对应用监控指标暴露,spring boot有一套完整的解决方案,并且内置了好很多的指标收集器
- 一、介绍pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair。当然你也可以自定义一个结构体struct。不过大家都是为了
- JSTL JSTL简介:JSTL的全称:JSP Standard Tag Library,JSP标准标签库JSTL的作用:&nbs
- 记录web项目部署到阿里云服务器步骤(使用 web项目、阿里云服务器、Xftp、Xshell),敬请参考和指正1.将要部署的项目打包成WAR