我有一個包含10個子哈希映射的哈希映射,這些子哈希映射5個鍵映射到一個字符串數組。當我想從一個子哈希映射更新某個特定鍵的值時,所有的鍵都會被更新;不僅如此,而且所有的孩子hashmap也會得到更新。這段代碼說明了我在做什麼。嵌套哈希映射更新所有鍵的所有值,而不是我想要更改的所有值
HashMap<String, HashMap<String, String[]>> parentMap = new HashMap<String, HashMap<String, String[]>>();
for(String x : someArray){ // Adds 10 children hashmaps to parentMap
parentMap.put(x,new HashMap<String, String[]>());
for(String y : someOtherArray){ // Creates 5 keys for each of the children hashmaps
parentMap.get(x).put(y,stringArray);
}
}
parentMap.get(someKey).put(someOtherKey,modifiedArray); // This updates the entry I want to update.
當我與最後的指令更新,我想特別更新的關鍵,然而一切都被更新,而不是所有的按鍵爲所有的孩子都包含HashMap,而不是更新了一個我想要的。
希望它是有道理的,我不知道這是否是正確的方法,但我一直在網上尋找任何有關做類似的事情沒有任何運氣的提示。我並不擅長使用Java,如果我可以用簡單的方法實現相同的結果,那將是值得歡迎的,請注意,我不能使用List或類似的東西,因爲它使用int索引,我需要引用到我的對象使用一個字符串(就像Python上的字典)。
感謝aioobe!這解決了我的問題!我沒有想到HashMaps的行爲如此。這讓我想起C指針。 – xmc