EnumMap學習

前記: 翻看《java 核心技術》第13章集合,看到EnumMap 一種鍵值屬於枚舉類型的映射表。想起前幾天有個需求:文件上傳如果出錯,返回給用戶的消息形如爲

                                                          錯誤的行號和原因:

    2,4,6 商品id爲必填項

    1,7  應用標識錯誤

     8   時間格式錯誤

由於錯誤原因是有限的,可以用枚舉ErrMsgEnum表示。起初利用 HashMap<ErrMsgEnum,String> 來保存,瞭解了EnumMap內部是利用數組存儲後,更改爲EnumMap<ErrMsgEnum,String> 效率更高


實現

  1.  ErrMsgEnum.java  

public enum ErrMsgEnum {
    required_item_id("商品id爲必填項"), 
    invalid_app_id("應用標識錯誤"), 
    invalid_date("時間格式錯誤");

    private String value;

    private ErrMsgEnum(String value) {
	this.setValue(value);
    }

    public String getValue() {
	return value;
    }

    public void setValue(String value) {
	this.value = value;
    }

}

2. TestEnumMap.java 

import java.util.EnumMap;
import java.util.Map;

public class TestEnumMap {
    
    public static void main(String[] args) {
	EnumMap<ErrMsgEnum,String> errMsgMap = new EnumMap<ErrMsgEnum,String>(ErrMsgEnum.class);
	
	errMsgMap.put(ErrMsgEnum.required_item_id, "2,4,6");
	errMsgMap.put(ErrMsgEnum.invalid_app_id, "1,7");
	errMsgMap.put(ErrMsgEnum.invalid_date, "8");
 
	for(Map.Entry<ErrMsgEnum,String> entry:errMsgMap.entrySet() ){
	    System.out.println(entry.getValue()+ " " + entry.getKey().getValue());
	}	
    }
}

注意事項

  1. 使用EnumMap時,必須指定枚舉類型。All of the keys in an enum map must come from a single enum type that is specified, explicitly or implicitly, when the map is created.

  2. key不能爲null Null keys are not permitted 

  3.  EnumMap內部以數組實現,性能更好。Enum maps are represented internally as arrays.  This representation is extremely compact and efficient.

發佈了103 篇原創文章 · 獲贊 75 · 訪問量 75萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章