EnumMap学習

1739 ワード

前記:「javaコアテクノロジー」の13章の集合を見ると、EnumMapのキー値が列挙タイプに属するマッピングテーブルが表示されます.先日、ファイルのアップロードでエラーが発生した場合、ユーザーに返されるメッセージは
エラーの行番号と理由:
2,4,6商品idは必須です
1,7アプリケーション識別エラー
8時間フォーマットエラー
エラーの原因は限られているので、ErrMsgEnumを列挙して表すことができます.当初はHashMapで保存していたのですが、EnumMap内部が配列で保存されていることを知り、より効率的にEnumMapに変更しました
インプリメンテーション
  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 errMsgMap = new EnumMap(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 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. キーはnull Null keys are not permittedではありません
  3. EnumMap内部は配列で実現され、パフォーマンスが向上します.Enum maps are represented internally as arrays.  This representation is extremely compact and efficient.