2015-01-06 2 views
1

Я пытаюсь использовать hashmap для хранения массива int из 4 целых чисел. когда я добавляю к хэшмапу, он должен добавить последний набор из 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 

Как вы можете видеть, первое множество целых чисел, были перезаписаны на 2-й набор целых чисел. Я понятия не имею, почему это происходит. Любая помощь приветствуется!

EDIT: Извините, мой компьютер отправил вопрос, прежде чем я закончил набирать весь свой код.

+4

Что вы имеете в виду под «всеми значениями»? Это не помогает, что мы не знаем ни одного из задействованных типов. Краткая, но полная программа, демонстрирующая проблему, облегчит вам помощь. –

+1

Нам нужно [MCVE] (http://stackoverflow.com/help/mcve) и более эффективную задачу, чтобы ответить на это. Ваше текущее описание звучит смутно для меня, как это не имеет ничего общего с Картой, а скорее непонимание того, как работают ссылки на массивы. – Radiodef

+1

Вы когда-нибудь повторно инициализировали 'ответ'? – chancea

ответ

3

на основе кода, переменная «ответ» должен быть массив вы хотите поместить в HashMap, Я думаю, вы должны инициализировать его каждый раз используя new ключевое слово, как этот

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

Большое спасибо, это было то, чего мне не хватало, все работает сейчас –

Смежные вопросы