最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java優(yōu)化if-else代碼的實(shí)戰(zhàn)記錄

 更新時(shí)間:2021年09月16日 15:04:02   作者:jeremylai7  
開發(fā)中經(jīng)常會(huì)根據(jù)不同的參數(shù)判斷走不同的邏輯業(yè)務(wù),我們常用的方法就是if/else嵌套使用,導(dǎo)致每增加一個(gè)需求就加一個(gè)if,慢慢的就會(huì)發(fā)現(xiàn)自己寫的代碼中出現(xiàn)了大量的if/else,這篇文章主要給大家介紹了關(guān)于Java優(yōu)化if-else代碼的相關(guān)資料,需要的朋友可以參考下

前言

開發(fā)系統(tǒng)一些狀態(tài),比如訂單狀態(tài):數(shù)據(jù)庫存儲是數(shù)字或字母,但是需要顯示中文或英文,一般用到if-else代碼判斷,但這種判斷可讀性比較差,也會(huì)影響后期維護(hù),也比較容易出現(xiàn)bug。比如:

假設(shè)狀態(tài)對應(yīng)關(guān)系: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”;
}

方案一: 數(shù)組

這種僅限通過數(shù)字獲取到字母或者中文。

首先設(shè)置數(shù)組

String[] statusArray = {"","agree","refuse","finish"};

通過數(shù)組的位置獲取數(shù)組的值

int status;
String statusStr =  statusArray[status];
  • 優(yōu)點(diǎn): 占用內(nèi)存少
  • 缺點(diǎn): 狀態(tài)值只能是數(shù)字,而且還需要考慮數(shù)組越界情況

方案二:HashMap

創(chuàng)建和添加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相對于數(shù)組解法,不限制 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;
      }
}
  • 優(yōu)點(diǎn):狀態(tài)值不限制數(shù)字
  • 缺點(diǎn):占用空間大

解決方案三:枚舉

先定義一個(gè)枚舉類

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 代碼塊可以優(yōu)化成一行代碼

String statusStr = TestEum.of(status);

總結(jié)

  1. 如果通過數(shù)字獲取描述,使用數(shù)組即可。
  2. 如果通過描述獲取數(shù)字,使用枚舉和HashMap都可以。

到此這篇關(guān)于Java優(yōu)化if-else代碼的文章就介紹到這了,更多相關(guān)Java優(yōu)化if-else代碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼

    Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼

    這篇文章主要介紹了Springboot集成Kafka實(shí)現(xiàn)producer和consumer的示例代碼,詳細(xì)的介紹了什么是Kafka和安裝Kafka以及在springboot項(xiàng)目中集成kafka收發(fā)message,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java8中的默認(rèn)方法(面試者必看)

    Java8中的默認(rèn)方法(面試者必看)

    這篇文章主要介紹了Java8中的默認(rèn)方法(面試者必看),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java注解的Retention和RetentionPolicy實(shí)例分析

    Java注解的Retention和RetentionPolicy實(shí)例分析

    這篇文章主要介紹了Java注解的Retention和RetentionPolicy,結(jié)合實(shí)例形式分析了Java注解Retention和RetentionPolicy的基本功能及使用方法,需要的朋友可以參考下
    2019-09-09
  • Maven安裝與配置圖文教程

    Maven安裝與配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了Maven安裝與配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 服務(wù)器實(shí)現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器方式(JSch)

    服務(wù)器實(shí)現(xiàn)Java遠(yuǎn)程訪問Linux服務(wù)器方式(JSch)

    文章介紹了如何使用Java遠(yuǎn)程訪問Linux服務(wù)器,主要包括建立SSH連接、使用JSch庫執(zhí)行命令、解析返回值以及關(guān)閉連接的步驟
    2024-11-11
  • springcloud如何用Redlock實(shí)現(xiàn)分布式鎖

    springcloud如何用Redlock實(shí)現(xiàn)分布式鎖

    本文主要介紹了springcloud如何用Redlock實(shí)現(xiàn)分布式鎖,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • springboot?整合?dubbo?的實(shí)現(xiàn)組聚合詳情

    springboot?整合?dubbo?的實(shí)現(xiàn)組聚合詳情

    這篇文章主要介紹了springboot整合dubbo的實(shí)現(xiàn)組聚合詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Java基礎(chǔ)類之ArrayUtils工具類詳解

    Java基礎(chǔ)類之ArrayUtils工具類詳解

    這篇文章主要介紹了java.ArrayDeque類使用方法,java.ArrayDeque類提供了可調(diào)整大小的陣列,并實(shí)現(xiàn)了Deque接口,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java中反射詳解

    Java中反射詳解

    本文主要介紹了Java中反射的相關(guān)知識。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • 解決Swagger2返回map復(fù)雜結(jié)構(gòu)不能解析的問題

    解決Swagger2返回map復(fù)雜結(jié)構(gòu)不能解析的問題

    這篇文章主要介紹了解決Swagger2返回map復(fù)雜結(jié)構(gòu)不能解析的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

广南县| 开化县| 彭州市| 隆安县| 巴楚县| 吉木萨尔县| 宁阳县| 温泉县| 易门县| 许昌县| 襄垣县| 屯昌县| 韩城市| 保康县| 双江| 新昌县| 阿图什市| 阳曲县| 崇文区| 交口县| 景东| 商丘市| 汨罗市| 兖州市| 宝鸡市| 北海市| 宜阳县| 五莲县| 新安县| 莱芜市| 宁波市| 沈丘县| 大石桥市| 黄龙县| 莱芜市| 突泉县| 尉犁县| 天长市| 鸡东县| 桂平市| 嫩江县|