2012-03-08 49 views
1

我在這裏有一個有趣的情況。我建立一個棋盤遊戲和我有一個董事會宣佈,爲HashMap的訪問來自嵌套HashMap的HashMap數據

HashMap<String, HashMap> board = new HashMap<String, HashMap>(); 

有在該主板的多個層,這就是爲什麼此HashMap必須採取其他HashMaps這樣。

我們用瓦片對象填充此板,如下所示。

HashMap tileObject = new HashMap(); 
tileObject.put("key1", value1); 
tileObject.put("key2", value2); 
tileObject.put("name", value3); 

我們正在將此(和其他瓷磚)添加到電路板。

board.put((String)tileObject.get("name"), tileObject); 

所以這一切都很好,我們已經添加了瓷磚板。現在我的問題是,從這個董事會讀。在分析板我有此代碼段中的函數

HashMap takeTileObject = new HashMap(); 
takeTileObject.put("unique-coordinate", board.get("unique-coordinate"); 
// we are getting the values from board at key "unique-coordinate" 

什麼,我需要做的是從takeTileObject訪問鍵1/KEY 2 /名稱。我試過這個

takeTileObject.get("unique-coordinate").(NOTHING HELPFUL HERE); 

我最想發生的事情就是這樣的。

takeTileObject.get("unique-coordinate").get("key1"); 

這是可能的嗎?

非常感謝您提前給予的幫助。

+0

它是什麼類型的'value3' – 2012-03-08 06:40:12

+0

它變化。在代碼中它有整數和字符串。名稱本身是一個字符串,有x和y座標是整數,一些狀態效果是布爾值。 – 2012-03-08 06:44:53

回答

3

這是因爲沒有指定的takeTileObject

HashMap<String, HashMap> takeTileObject = new HashMap<String, HashMap>(); 

類型告訴系統,該值是HashMap對象,你應該可以稱之爲

takeTileObject.get("unique-coordinate").get("key1"); 
+0

就這樣,我的救世主華爾茲在和拯救了一天:)。非常感謝!這工作完美。 – 2012-03-08 06:46:12

+0

...順便說一下,Google收藏集代碼中的MultiMap可能是實現地圖映射的有用工具[http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/收集/ Multimap.html](http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multimap.html)。 – 2012-03-08 07:24:13

0

變化的部份一段代碼

HashMap(String, HashMap> board = new HashMap<String, HashMap>(); 

HashMap<String, HashMap> board = new HashMap<String, HashMap>(); 
+0

我認爲這是一個錯字 – Hanon 2012-03-08 06:39:43

+0

是的,這只是一個錯字,對不起:) – 2012-03-08 06:42:09