2012-04-29 116 views
1

我已經研究過這個問題了很久,並且無法正確理解!java - 使用相同的鍵+不同的值替換hashmap中的鍵+值

我有一個填充hashmap和一個相同格式的hashmap(Map<Integer, ArrayList<String>>),我一直在努力(它的鍵值/ s等於填充的hashmap中的其他鍵,如0,1,2等)。當我使用.put命令更新填充的hashmap時,我一直在處理的幾個/一個替換填充的hashmap中的所有內容 - 這是正常的嗎?我哪裏錯了?我期待它只是取代關鍵問題+值...

原諒不提供的代碼,但它意味着發佈相當數量的演示,只是想知道是否有人可以幫助解釋這可能會出錯。我可以把東西扔在一起,以顯示是否需要...

非常感謝!

+0

我不明白你的問題?你的意思是,當你把一個已經存在的鍵放在'map'中時,爲什麼它被替換? – noMAD

+0

如果您可以發佈問題中的循環/替換代碼 – g13n

+9

,那就太好了您必須發佈代碼。你的問題很難理解,無論如何,我們怎麼知道你做錯了什麼。將您的代碼減少到重現問題所需的最低限度,不要將所有內容都轉儲出來。 –

回答

4

這是怎樣一個代碼示例可能看起來像:

import java.util.*; 

public class NumFormEx 
{ 
    public static ArrayList <String> listIt (String... params) 
    { 
     ArrayList <String> as = new ArrayList <String>(); 
     for (String s: params) 
      as.add (s); 
     return as; 
    } 

    public static void main (String args[]) 
    { 
     Map <Integer, ArrayList<String>> mils = new HashMap<Integer, ArrayList<String>>(); 
     mils.put (1, listIt ("foo", "bar")); 
     mils.put (2, listIt ("zacka", "zacka")); 
     System.out.println ("mils:\t" + mils); 
     mils.put (1, listIt ("foobar"));   
     System.out.println ("mils:\t" + mils); 
    } 
} 

測試:

java NumFormEx 
mils: {1=[foo, bar], 2=[zacka, zacka]} 
mils: {1=[foobar], 2=[zacka, zacka]} 

我要說:如預期。

+0

確實有幫助,謝謝!你會希望能夠採取密爾地圖和輸入到地圖<字符串,地圖 >>以相同的效果? – user1360809

+0

我不會安靜地理解「達到同樣的效果」。是的,我可以將該地圖放入另一個地圖中,其中字符串是關鍵字。不容易想象一個用例,但你可以有一個詞的用法映射:約翰使用2次「zacka zacka」,1次「富」,1次「酒吧」。彼得有一個不同的使用情況地圖。對於不同的名稱,我們有不同的地圖,地圖得到更新,插入,刪除...。你能建立一個顯示問題的例子嗎? –

0

由於地圖不允許你可以做重複的值:

myMap.put(2, new ArrayList<String>()); 

這將考慮元素與鍵2和替換它的列表與新的(「空白」)列表。

+0

我一直在使用: mainMapLayout.put(int,updateMapLayout); 我可能必須糾正自己,因爲我正在向Map >>添加Map >。 地圖<字符串(mainMapLayout)=用戶名和地圖<整數,ArrayList的>的客戶價值(整數= 0.1,2,3等和值= ArrayList的) 我的歉意! – user1360809

+0

結果,原始文件內容: 2.d.title = {0 = [1,2,3,,4,5,6,7,8,9,10,11],1 = [1,2, 3,4,5,6,7,8,9,10,11]}} 更新的文件內容: 2.d.title = {0 = [1,2,3,4,5, 6,7,8,9,x,11]}} 使用命令: mainMapLayout.put(string,updateMapLayout); – user1360809