2015-01-06 152 views
1

我試圖用一個散列表來存儲一個4整數的int數組。當我添加到散列表中時,它應該添加最近一組4個整數,然後生成一組新的4個數字。但是,它會用新生成的4個整數集來覆蓋所有的值......這似乎很奇怪,因爲我從來沒有告訴它這樣做。有任何想法嗎?這裏是將其添加java hashmap覆蓋值

System.out.println("Games Played: " + gamesPlayed); 
System.out.println("Size Before: " + scoreAnswer.size()); 
scoreAnswer.put(gamesPlayed, answer); //gamesPlayed will increase by 1 every time right after 
System.out.println("Size After: " + scoreAnswer.size()); 
for (int i = 0; i < maxPin; i++) { 
    System.out.println(answer[i]); 
} 
System.out.println("hash"); 
for (int i = 0; i < scoreAnswer.size(); i++) { 
    int[] a = scoreAnswer.get(i); 
    for (int j = 0; j < a.length; j++) { 
     System.out.println("[" + i + "]" + a[j]); 
    } 
} 
gamesPlayed++; 
System.out.println("Games Played: " + gamesPlayed); 

當我運行該程序,並把它添加到HashMap中這是將打印出的代碼:

Games Played: 0, Size Before: 0, Size After: 1, 4 0 0 4, hash [0]4 [0]0 [0]0 [0]4 Games Played: 1 

一切都在這裏工作,直到我有它另添加到哈希值後,將回本:

Games Played: 1, Size Before: 1, Size After: 2, 4 2 0 4, hash [0]4 [0]2 [0]0 [0]4 [1]4 [1]2 [1]0 [1]4, Games Played: 2 

正如你所看到的,第一個整數集已經覆蓋到第二整數集。我不知道爲什麼會發生這種情況。任何幫助表示讚賞!

編輯:很抱歉,我的電腦在我輸入完所有代碼之前發佈了問題。

+4

什麼你的意思是「所有的價值」?這對我們不知道任何涉及的類型並無幫助。一個簡短但完整的程序演示這個問題會使它更容易幫助你。 –

+1

我們需要一個[MCVE](http://stackoverflow.com/help/mcve)和一個更好的問題陳述來回答這個問題。你目前的描述對我來說聽起來含糊不清,因爲這與Map沒有關係,而是對數組引用如何工作的誤解。 – Radiodef

+1

你有沒有重新初始化答案? – chancea

回答

3

根據你的代碼中,變量「答案」必須要投入HashMap中的陣列, 我猜你需要使用new關鍵字每次初始化,這樣

int[] answer = new int[4]; 
+0

非常感謝你,那是我錯過的,現在一切都在工作 –