如何在Java中创建一个类似Python的字典?

3

我是一名Java程序员,正在开发一个基于文本的游戏。我希望使用类似Python的字典来构建地图,但HashMap并不能满足我的需求,因为我需要将多个值与一个字典关联起来,例如:

在Python中,你可以这样定义一个字典:

room_x = { "name": "X",

"description":"Random description",

"exits": {linked to another dictionary},

"items": list_of_players_items}

Java是否可以实现类似的功能?

提前感谢。


你为什么不像一个好的面向对象程序员一样,使用面向对象语言创建一个带有字段的类呢? - Andreas
在提出新问题之前,请尝试进行几次谷歌搜索,特别是对于常见任务。 - TigerhawkT3
1
@TigerhawkT3 只是提供信息,我并不是特别要求 HashMap 的解决方案,而是想知道如何在 Java 中复制 Python 中的字典功能(希望有比 HashMap 更好的解决方案)。HashMap 解决方案事实证明是最好的方法,但这并不意味着它与您标记的问题相同。 - Markwin
根据@TigerhawkT3所说,似乎没人需要在这里提问,因为他们总能找到与自己特定问题相关的答案 :) - Haifeng Zhang
@TigerhawkT3,请停止在这个网站上对我的其他答案进行负面投票。 - Haifeng Zhang
显示剩余3条评论
2个回答

3

HashMap可以胜任此任务:

HashMap<String, String> hashMap = new HashMap<>();  //<key,value>  both key and value are Strings
hashMap.put("name", "X");
hashMap.put("description", "Random description");

为了链接多个值,您需要将键值对类型更改为以下内容:
HashMap<String,HashMap<String, String>> linkedMap = new HashMap<>();  // key is string and value is HashMap<String, String>
HashMap<String,String> itemsMap = new HashMap<>();
itemsMap.put("item1", "this is first item");
itemsMap.put("item2", "this is second item");
linkedMap.put("items", itemsMap);

上面的代码只是我写的一个快速示例,你需要声明你的数据的实际类型,它不一定是String
希望这有所帮助。

0

HashMapHashtable都足够使用。它们都有键值对,其中键是一个字符串,值可以是任何对象。因此,您可以像这样定义它:HashMap<String,Object> map=new HashMap<String,Object>()

值可以是任何东西(甚至对于HashMap也可以为null,但对于Hashtable不行)。

因此,您可以将另一个HashMap作为值,这解决了"exits": {linked to another dictionary}

并将List作为值,这解决了"items": list_of_players_items

这里 提供了HashMap和Hashtable之间的区别。

示例代码:

List players = // some List
HashMap exits = // some Map
HashMap<String, Object> room_x = new HashMap<String, Object>();
map.put("name",name_string);
map.put("desc",desc_string);
mp.put("exits",exits);
map.put("items",players);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接