1

我正在用 Java 制作游戏,并且正在使用 Hashmap 构建项目列表。Key是Item的缩写,value是项目名称。我想为每个项目分配一个图像,但也可以在我需要的任何地方调用该项目。

图像应该是可选的,而缩写应该和名称应该是强制性的。

这是我的哈希的一个例子

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")

有一个更好的方法吗?

谢谢你

4

1 回答 1

6

听起来你应该有一个Item类,它有一个缩写、名称和可选图像。Map<String, Item>然后,您可以从项目列表开始并非常轻松地构建。

每当您发现自己想要在集合中构建更多结构时,请考虑封装相关元素。例如,如果您有两个总是具有相同大小的列表,并且具有相同索引的项目是相关的,您应该考虑移动到单个列表,每个元素都是那对相关的数据。这种情况是一样的,但是以地图的形式。

于 2013-05-21T23:42:38.760 回答