Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 静态哈希映射初始化_Java_Spring_Hashmap - Fatal编程技术网

Java 静态哈希映射初始化

Java 静态哈希映射初始化,java,spring,hashmap,Java,Spring,Hashmap,我有这门课,我想知道: 1°这是定义静态HashMasp的最佳方式吗 2°在基于Spring的应用程序中,这是最好的方法吗?(Spring提供更好的方法吗? 提前谢谢 public class MyHashMap { private static final Map<Integer, String> myMap; static { Map<CustomEnum, String> aMap = new Hash

我有这门课,我想知道:
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));
公共类MyHashMap{
私有静态最终映射myMap;
静止的{
Map aMap=newhashmap();
aMap.put(CustomEnum.UN,“一”);
aMap.put(CustomEnum.DEUX,“两个”);
myMap=Collections.unmodifiableMap(aMap);
}
公共静态字符串getValue(CustomEnum id){
返回myMap.get(id);
}
}
System.out.println(MyHashMap.getValue(CustomEnum.UN));

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

static final ImmutableMap<String, Integer> WORD_TO_INT =
       new ImmutableMap.Builder<String, Integer>()
           .put("one", 1)
           .put("two", 2)
           .put("three", 3)
           .build();
静态最终不可变映射单词到INT=
新的ImmutableMap.Builder()
.put(“一”,1)
.put(“两个”,2)
.put(“三”,3)
.build();
如果您已经在使用并使用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>
    ...
。。。
...

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

  • 静态初始值设定项

    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);
    }
    
    private静态最终映射myMap=newhashmap();
    静止的{
    myMap.put(键1,值1);
    myMap.put(键2,值2);
    }
    公共静态映射getMap(){
    返回集合。不可修改映射(myMap);
    }
    
  • 实例初始化器(匿名子类)

    private静态最终映射myMap=newhashmap()
    {
    {
    put(键1,值1);
    put(键2,值2);
    }
    };
    公共静态映射getMap(){
    返回集合。不可修改映射(myMap);
    }
    私有静态void addPair(字符串键,字符串val){
    //将键val添加到映射
    }
    
  • 假设稍后您想要向映射添加一些常量,那么您也可以这样做


    集合。不可修改的地图:它有助于拥有一个不可修改的地图视图,该视图不能被修改。由于它给出了不受支持的异常,如果对map进行了任何修改。

    可能会有兴趣知道,从java 9开始,您将能够以与Arrays.asList类似的方式在移动中创建map,这将允许您避免静态块。试图找到我已经读过的地方…好了。。。和。
    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
    }