转载自:http://blog.youkuaiyun.com/cuidiwhere/article/details/21995363
前记: 翻看《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());
- }
- }
- }