前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java优化if-else代码几个解决方案(转载非原创)

Java优化if-else代码几个解决方案(转载非原创)

作者头像
xlj
修改2021-09-22 11:07:26
2480
修改2021-09-22 11:07:26
举报
文章被收录于专栏:XLJ的技术专栏XLJ的技术专栏

转载来源:https://www.cnblogs.com/jeremylai7/p/15291165.html

前言

开发系统一些状态,比如订单状态:数据库存储是数字或字母,但是需要显示中文或英文,一般用到if-else代码判断,但这种判断可读性比较差,也会影响后期维护,也比较容易出现bug。比如: 假设状态对应关系:1:agree 2:refuse 3:finish

代码语言:javascript
复制
int status;
String statusStr = null;
if (status == 1) {
   status = "agree";
} else if (status == 2) {
   status = "refuse";
}else if(status == 3) {
    status = “finish”;
}

方案一: 数组

这种仅限通过数字获取到字母或者中文。 首先设置数组

代码语言:javascript
复制
String[] statusArray = {"","agree","refuse","finish"};

通过数组的位置获取数组的值

代码语言:javascript
复制
int status;
String statusStr =  statusArray[status];

优点: 占用内存少 缺点: 状态值只能是数字,而且还需要考虑数组越界情况

方案二:HashMap

创建和添加map:

代码语言:javascript
复制
    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 的类型。

代码语言:javascript
复制
int status;
map.get(status);
由 value 获取 key

使用map遍历:

代码语言:javascript
复制
int status;
for(Map.Entry<Integer, String> vo : map.entrySet()){
     if (vo.getValue().equals(result)) {
           status = vo.getKey();
           break;
      }
}

优点:状态值不限制数字 缺点:占用空间大

解决方案三、枚举

先定义一个枚举类

代码语言:javascript
复制
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 代码块可以优化成一行代码

代码语言:javascript
复制
String statusStr = TestEum.of(status);

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 方案一: 数组
      • 方案二:HashMap
        • 由 key 获取 value
        • 由 value 获取 key
      • 解决方案三、枚举
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档