如何在java中创建字典,类似于python中的字典?

时间:2016-11-21 04:40:45

标签: java python

我正在使用java中的基于文本的游戏,并希望对地图使用类似字典的python,HashMap并不适合我,因为我希望将多个值链接到一个字典,例如

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

room_x = { "name": "X",

"description":"Random description",

"exits": {linked to another dictionary},

"items": list_of_players_items}

Java中有类似的东西吗?

提前致谢。

2 个答案:

答案 0 :(得分: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
希望它有所帮助。

答案 1 :(得分:0)

HashMapHashtable就足够了。两者都有键值对,其中key是String,value可以是任何对象。因此,您可以将其定义为HashMap<String, Object> map = new HashMap<String, Object>()

值可以是任何值(对于HashMap而言为空,而不是Hashtable)。

因此,您可以使用另一个HashMap作为值,这可以解决&#34;退出&#34;:{链接到另一个词典}

List作为值,解决&#34; items&#34;:list_of_players_items

This给出了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);