为了账号安全,请及时绑定邮箱和手机立即绑定

如何初始化静态地图?

如何初始化静态地图?

呼啦一阵风 2019-07-02 14:52:54
如何初始化静态地图?你如何初始化静态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");         }     };}
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

在这种情况下,实例初始化器只是语法糖,对吗?我不明白为什么您需要额外的匿名类来初始化。如果要创建的类是最终类,它将无法工作。

您也可以使用静态初始化器创建不可变的映射:

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);
    }}


查看完整回答
反对 回复 2019-07-02
?
慕标5832272

TA贡献1966条经验 获得超4个赞

我会用:

public class Test {
    private static final Map<Integer, String> MY_MAP = createMap();

    private static Map<Integer, String> createMap() {
        Map<Integer, String> result = new HashMap<Integer, String>();
        result.put(1, "one");
        result.put(2, "two");
        return Collections.unmodifiableMap(result);
    }}
  1. 它避免了匿名类,我个人认为这是一种糟糕的风格,并且避免了匿名类。
  2. 它使地图的创建更加明确。
  3. 它使地图不可修改
  4. 因为我的映射是常量,所以我把它命名为常量


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 399 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信