亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何初始化靜態地圖?

如何初始化靜態地圖?

呼啦一陣風 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 關注
  • 422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號