2012-08-09 86 views
0

我有一個Map這樣的:如何將對象從一張地圖放到另一張地圖上?

Map<String,GridCell> cellsMap 

我通過這個到一個方法,並從方法的返回應包含Map(比如answerMap),其中包含的cellsMap地圖所有條目加上一個額外名額其中包含String作爲鍵和String作爲值。例如:

Map<String,Object> answerMap = new ConcurrentHashMap<String,Object>(); 
    //answer should first contain all the map entries of cellsMap and then add an extra entry like the following 
    answer.put(getId(), getSelectionValue()); // getSelectionValue() returns a String that contains coordinates of the selected cells. 
    return answerMap; 

回答

3

您是否考慮過Map.putAll()方法?

例如

answerMap.putAll(cellsMap); 

順便說一下,我不認爲這是一個好的對象模型。我認爲你最好創建一個包含原始地圖(可能是副本)的新類,併爲您的對創建一個附加字段。

否則,你將不同類型的對象扔到同一張地圖上,當你以後抽取這些信息時,這會使生活變得複雜。每次你通過一個鍵提取你將不得不檢查返回的對象的類型。請注意,ConcurrentHashMaps不保留廣告訂單。

+0

爲什麼answerMap.putAll()允許我們如果它是危險的?向後兼容原始類型? – Geek 2012-08-09 09:00:57

+0

putAll()不是問題。這是從另一個地圖填充地圖的簡單方法。我的問題是,你使用地圖來存儲不同的無關類型(GridCell和String),所以當你做get()時,你不知道你在得到什麼 – 2012-08-09 09:21:59

+0

是的,我明白你的觀點。 – Geek 2012-08-09 09:39:56

0

使用clone()方法。

HashMap answerMap = (HashMap)cellsMap.clone(); 
+0

據我所知,不允許將'Map '轉換爲'Map '。所以這可能不起作用。 – Dahaka 2012-08-09 10:36:48

0

地圖界面具有添加在地圖另一個對象的所有值的putAll()方法。

相關問題