我正在使用java中的基于文本的游戏,并希望对地图使用类似字典的python,HashMap并不适合我,因为我希望将多个值链接到一个字典,例如
在python中,你可以像这样定义一个字典:
room_x = { "name": "X",
"description":"Random description",
"exits": {linked to another dictionary},
"items": list_of_players_items}
Java中有类似的东西吗?
提前致谢。
答案 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)
HashMap
或Hashtable
就足够了。两者都有键值对,其中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);