Java 元素列表

标签 java

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

图像应该是可选的,而缩写应该是必填的。

这是我的哈希的一个例子

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

有更好的方法吗?

谢谢

最佳答案

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

每当您发现自己想要在集合中构建更多结构时,请考虑封装相关元素。例如,如果你有两个列表,它们总是具有相同的大小,并且具有相同索引的项目是相关的,你应该考虑移动到一个列表,每个元素都是那对相关的数据片段。本例也是一样,只是以 map 的形式。

关于Java 元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681277/

相关文章:

java - 如何在java正则表达式中指示0,1次或多次回车换行

java - 我无法通过 Android SDK 连接到我的远程 MySQL

java - 准备好的语句执行查询错误(com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException)

java - 如何设置 Jersey REST Web 服务的超时?

java - JPA CriteriaBuilder 喜欢双重

java - Eclipse 上 java 中的 @Subscribe 和 @Produce 关键字

java - 强制线程每天在特定时间执行操作

java - 如何使用科学记数法存储数字?

java - 使用 gradle 编译 zip,包括由同级子项目实现的库

java - CalendarView 始终返回当天,忽略用户选择的内容