JAVA EnumMap

来源:互联网 发布:一起看软件 编辑:程序博客网 时间:2024/05/06 04:59

转载自:http://blog.csdn.net/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  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. public enum ErrMsgEnum {  
  2.     required_item_id("商品id为必填项"),   
  3.     invalid_app_id("应用标识错误"),   
  4.     invalid_date("时间格式错误");  
  5.   
  6.     private String value;  
  7.   
  8.     private ErrMsgEnum(String value) {  
  9.     this.setValue(value);  
  10.     }  
  11.   
  12.     public String getValue() {  
  13.     return value;  
  14.     }  
  15.   
  16.     public void setValue(String value) {  
  17.     this.value = value;  
  18.     }  
  19.   
  20. }  

2. TestEnumMap.java 

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.util.EnumMap;  
  2. import java.util.Map;  
  3.   
  4. public class TestEnumMap {  
  5.       
  6.     public static void main(String[] args) {  
  7.     EnumMap<ErrMsgEnum,String> errMsgMap = new EnumMap<ErrMsgEnum,String>(ErrMsgEnum.class);  
  8.       
  9.     errMsgMap.put(ErrMsgEnum.required_item_id, "2,4,6");  
  10.     errMsgMap.put(ErrMsgEnum.invalid_app_id, "1,7");  
  11.     errMsgMap.put(ErrMsgEnum.invalid_date, "8");  
  12.    
  13.     for(Map.Entry<ErrMsgEnum,String> entry:errMsgMap.entrySet() ){  
  14.         System.out.println(entry.getValue()+ " " + entry.getKey().getValue());  
  15.     }     
  16.     }  
  17. }  
0 0