2013-05-21 76 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