2012-10-18 122 views
0

我想將HashMaps存儲在數組中。我試圖只做一個HashMap,用特定信息填充它並將其存儲到數組的一個元素中。然後,我想用不同的信息覆蓋該Hashmap中的信息,然後將其存儲到該數組的另一個元素中。我想多次這樣做。要做到這一點,最好的方法是什麼?在數組中存儲hashMap

現在我有:

HashMap[][] location = new HashMap[columns][rows]; 
HashMap <String, String> area = new HashMap <String, String>(); 

public Map() { 

    area.put("description", "You are in the upper left\n"); 
    location[0][0] = area; 

    area.put("description", "You are in the upper middle\n"); 
    location[1][0] = area; 
} 

這樣做的問題是,現在既位置[0] [0]和位置[1] [0]具有相同的描述。

+0

您應該使用地圖的區域,而不是的HashMap。從這個意義上說,這是一個很好的做法,將來可以更容易地改變實施。 – Arham

+0

我不確定我的區域和您的區域是否相同。我在地圖上使用區域,而不是數學。在我的情況下更好地使用HashMap? – tazboy

+0

您正在混淆Map的字面意義和Java的Map接口。我的意思是你應該初始化你的區域變量爲,Map area = new HashMap ();這將有助於你在將來想要轉移時說讓LinkedHashMap,Treemap或任何其他的Map風格。 – Arham

回答

2

位置[0] [0]和位置[1] [0]持相同的指針區域

你應該做這樣的

location[0][0] = createArea("You are in the upper left\n"); 
location[1][0] = createArea("You are in the upper middle\n"); 



HashMap <String, String> createArea(String desc){ 
    HashMap <String, String> area = new HashMap <String, String>(); 
    area.put("description", desc); 
    return area; 
} 
+0

這樣做了!謝謝。我喜歡它有多簡單。我知道我需要製作一個新的HashMap,但我無法想象代碼會是什麼樣子。方法是關鍵。 – tazboy

0

您需要創建Map的不同實例以存儲在每個位置。

public Map() {  

    Map<String, String> area = new HashMap<String, String>(); 
    area.put("description", "You are in the upper left\n");  
    location[0][0] = area;  

    area = new HashMap<String, String>(); 
    area.put("description", "You are in the upper middle\n");  
    location[1][0] = area; }