如何初始化静态地图?

问题:

您将如何使用Java初始化静态Map?
方法一:静态初始化
方法二:实例初始化(匿名子类)
要么
一些其他的方法?
每个的利弊是什么?
这是一个示例说明两种方法:

import java.util.HashMap;
import java.util.Map;

public class Test {
    private static final Map<Integer, String> myMap = new HashMap<Integer, String>();
    static {
        myMap.put(1, "one");
        myMap.put(2, "two");
    }

    private static final Map<Integer, String> myMap2 = new HashMap<Integer, String>(){
        {
            put(1, "one");
            put(2, "two");
        }
    };
}

回答:

在这种情况下,实例初始化器只是语法糖,对吧?我不明白为什么你需要一个额外的匿名类只是为了初始化。如果被创建的类是final,那将不起作用。
您也可以使用静态初始化器创建不变的地图:

public class Test {
    private static final Map<Integer, String> myMap;
    static {
        Map<Integer, String> aMap = ....;
        aMap.put(1, "one");
        aMap.put(2, "two");
        myMap = Collections.unmodifiableMap(aMap);
    }
}

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How can I Initialize a static Map?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

18 + = 24