如何初始化静态地图?

如何初始化静态地图?

你如何初始化静态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");
        }
    };}


呼啦一阵风
浏览 400回答 3
3回答

鸿蒙传说

在这种情况下,实例初始化器只是语法糖,对吗?我不明白为什么您需要额外的匿名类来初始化。如果要创建的类是最终类,它将无法工作。您也可以使用静态初始化器创建不可变的映射:public&nbsp;class&nbsp;Test&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;Map<Integer,&nbsp;String>&nbsp;myMap; &nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map<Integer,&nbsp;String>&nbsp;aMap&nbsp;=&nbsp;....; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aMap.put(1,&nbsp;"one"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aMap.put(2,&nbsp;"two"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myMap&nbsp;=&nbsp;Collections.unmodifiableMap(aMap); &nbsp;&nbsp;&nbsp;&nbsp;}}

慕标5832272

我会用:public&nbsp;class&nbsp;Test&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;Map<Integer,&nbsp;String>&nbsp;MY_MAP&nbsp;=&nbsp;createMap(); &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;Map<Integer,&nbsp;String>&nbsp;createMap()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map<Integer,&nbsp;String>&nbsp;result&nbsp;=&nbsp;new&nbsp;HashMap<Integer,&nbsp;String>(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(1,&nbsp;"one"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(2,&nbsp;"two"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Collections.unmodifiableMap(result); &nbsp;&nbsp;&nbsp;&nbsp;}}它避免了匿名类,我个人认为这是一种糟糕的风格,并且避免了匿名类。它使地图的创建更加明确。它使地图不可修改因为我的映射是常量,所以我把它命名为常量
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java