2015-01-06 189 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

非常感谢你,那是我错过的,现在一切都在工作 –