2013-05-21 77 views
1

我正在用Java創建一個遊戲,並且我正在使用一個Hashmap構造一個Items列表。密鑰是項目的縮寫,值是項目名稱。我想爲每個項目分配一個圖像,但也可以根據需要調用該項目。Java元素列表

圖像應該是可選的,而縮寫應該是和必須的。

這是我的散列的一個例子

public static HashMap<String, String> head_items = new HashMap<String, String>(){{ 
     put("DEF"  , "Hat"); 
     put("HH_CH"  , "Copper Helm"); 
     put("HH_BH"  , "Bronze Helm"); 
     put("HH_IH"  , "Iron Helm"); 
     put("HH_SH"  , "Steel Helm"); 
     put("HH_MH"  , "Mithril Helm"); 
    }}; 

這是我曾嘗試

public static HashMap<HashMap<String, String>, List<String>> mock_list = new HashMap<HashMap<String,String>, List<String>>() {{ 
    put(("DEF", "HAT"), "/Resources/images/sprites_16x16/player.png") 
}}; 

我會以某種方式可以說 (僞代碼)

setItem(mock_list.get("DEF")) # this would get "Hat" 
setImage(mock_list.somehow_get_the_image_related_to_"DEF") 

有一個更好的方法嗎?

謝謝

+2

青銅,鋼鐵和祕銀不是元素。 –

回答

6

這聽起來像你應該有一個Item類,它有一個縮寫,名字和可選的圖像。然後,您可以從項目列表開始,並輕鬆構建Map<String, Item>

每當您發現自己想要在集合中構建更多結構時,請考慮封裝相關元素。例如,如果您有兩個總是意味着具有相同大小的列表,並且具有相同索引的項目相關,則應考慮將其移動到單個列表,其中每個元素都是相關的一對數據。這種情況是一樣的,但以地圖形式。

+0

這裏的關鍵詞是「封裝」。 – SJuan76

+0

謝謝:)我沒有想到這一點。 – user2407444