欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年09月16日 15:04:02   作者:jeremylai7  
開(kāi)發(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)資料,需要的朋友可以參考下

前言

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

假設(shè)狀態(tài)對(duì)應(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ù)組

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

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

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

通過(guò)數(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");
    }

這種有兩種求解方式,通過(guò) key 獲取 value 以及通過(guò) value 獲取 key,

由 key 獲取 value

直接使用 get 方法即可。這里的key相對(duì)于數(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. 如果通過(guò)數(shù)字獲取描述,使用數(shù)組即可。
  2. 如果通過(guò)描述獲取數(shù)字,使用枚舉和HashMap都可以。

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

相關(guān)文章

  • 詳解自定義SpringMVC的Http信息轉(zhuǎn)換器的使用

    詳解自定義SpringMVC的Http信息轉(zhuǎn)換器的使用

    這篇文章主要介紹了詳解自定義SpringMVC的Http信息轉(zhuǎn)換器的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Java中6種單例模式寫法代碼實(shí)例

    Java中6種單例模式寫法代碼實(shí)例

    這篇文章主要介紹了Java中6種單例模式寫法代碼實(shí)例,某個(gè)類任何情況下只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn)來(lái)獲取該實(shí)例,Java6種單例模式有2種懶漢式,2種餓漢式,靜態(tài)內(nèi)部類 ,枚舉類,需要的朋友可以參考下
    2024-01-01
  • java泛型常用通配符實(shí)例解析

    java泛型常用通配符實(shí)例解析

    這篇文章主要介紹了java泛型常用通配符實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Maven導(dǎo)入依賴時(shí)爆紅的幾種解決方法

    Maven導(dǎo)入依賴時(shí)爆紅的幾種解決方法

    使用idea建立maven項(xiàng)目,maven導(dǎo)入依賴報(bào)紅,本文主要介紹了Maven導(dǎo)入依賴時(shí)爆紅的幾種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java解決前端數(shù)據(jù)處理及亂碼問(wèn)題

    Java解決前端數(shù)據(jù)處理及亂碼問(wèn)題

    大伙們有沒(méi)有遇到數(shù)據(jù)亂碼的問(wèn)題,真的是讓人心情煩躁,今天就來(lái)教下大家數(shù)據(jù)怎么傳輸?shù)角岸艘约皝y碼問(wèn)題怎么解決的,需要的朋友可以參考一下
    2021-12-12
  • 詳解Java動(dòng)態(tài)代理的實(shí)現(xiàn)機(jī)制

    詳解Java動(dòng)態(tài)代理的實(shí)現(xiàn)機(jī)制

    這篇文章主要為大家詳細(xì)介紹了Java動(dòng)態(tài)代理的實(shí)現(xiàn)機(jī)制,感興趣的小伙伴們可以參考一下
    2016-03-03
  • java線性表排序示例分享

    java線性表排序示例分享

    這篇文章主要介紹了java線性表排序示例,需要的朋友可以參考下
    2014-03-03
  • JDBC 程序的常見(jiàn)錯(cuò)誤及調(diào)試方法

    JDBC 程序的常見(jiàn)錯(cuò)誤及調(diào)試方法

    本文是《Java Web開(kāi)發(fā)教程——入門與提高篇(JSP+Servlet)》一書《第9章 JDBC技術(shù)》的補(bǔ)充內(nèi)容。
    2009-06-06
  • Java生成二維碼的2種實(shí)現(xiàn)方法

    Java生成二維碼的2種實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Java生成二維碼的2種實(shí)現(xiàn)方法,二維碼的實(shí)質(zhì)就是一個(gè)鏈接地址,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • java實(shí)現(xiàn)圖片加水印效果

    java實(shí)現(xiàn)圖片加水印效果

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖片加水印效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評(píng)論