有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java静态哈希映射初始化

我有这门课,我想知道:
1°这是定义静态HashMasp的最佳方式吗
2°在基于Spring的应用程序中,这是最好的方法吗?(Spring提供了更好的方法吗?)

提前谢谢

    public class MyHashMap {
        private static final Map<Integer, String> myMap;
        static {
            Map<CustomEnum, String> aMap = new HashMap<CustomEnum, String>();
            aMap.put(CustomEnum.UN, "one");
            aMap.put(CustomEnum.DEUX, "two");
            myMap = Collections.unmodifiableMap(aMap);
        }

        public static String getValue(CustomEnum id){
            return myMap.get(id);
        }
    }


    System.out.println(MyHashMap.getValue(CustomEnum.UN));

共 (2) 个答案

  1. # 1 楼答案

    你可以使用番石榴图书馆。但如果您不想使用第三方库,则有两种方法:

    1. 静态初始值设定项

      private static final Map<String,String> myMap = new HashMap<String, String>();
      static {
           myMap.put(key1, value1);
           myMap.put(key2, value2);
      }
      
      public static Map getMap() {
           return Collections.unmodifiableMap(myMap);
      }
      
    2. 实例初始化器(匿名子类)

      private static final Map<String,String> myMap = new HashMap<String, String>()
      {
         {
           put(key1, value1);
           put(key2, value2);
         }
      };
      
      public static Map getMap() {
           return Collections.unmodifiableMap(myMap);
      }
      
      private static void addPair(String key, String val){
           // Add key val to map
      }
      

    假设稍后您想要向映射添加一些常量,那么您也可以这样做

    收藏。不可修改的地图:有一个不可修改的地图视图,这有助于不可修改。因为它给出了不支持的异常,如果对映射进行了任何修改

  2. # 2 楼答案

    有几种方法可以做到这一点。例如,如果您的映射是不可变的,则可以考虑使用Google Guava libraries。 它有一个ImmutableMap类,可用于将地图构造为:-

    static final ImmutableMap<String, Integer> WORD_TO_INT =
           new ImmutableMap.Builder<String, Integer>()
               .put("one", 1)
               .put("two", 2)
               .put("three", 3)
               .build();
    

    如果您已经在使用Spring Framework并使用XML连接bean,那么您可以通过XML直接填充映射,如下所示:-

        ...    
    <!  creates a java.util.Map instance with the supplied key-value pairs  >
    <util:map id="emails">
        <entry key="pechorin" value="pechorin@hero.org"/>
        <entry key="raskolnikov" value="raskolnikov@slums.org"/>
        <entry key="stavrogin" value="stavrogin@gov.org"/>
        <entry key="porfiry" value="porfiry@gov.org"/>
    </util:map>
        ...