0
我遇到了一些奇怪的東西,我無法得到正在發生的事情。我創建一個HashMap,然後在循環中添加一些鍵值對。在循環內,我在每次迭代中更改一個預初始化的數組。因此,我希望永遠是不同的陣列作爲map.Here的代碼值:迭代HashMap奇怪的行爲
int[] valueArray = new int[3];
int key = 0;
Map<Integer, int[]> map = new HashMap<>();
while (key < 5) {
for (int i = 0; i < 3; i++) {
valueArray[i] = key;
}
System.out.println(Arrays.toString(valueArray));
map.put(key, valueArray);
key++;
}
for (int i = 0; i < map.size(); i++) {
System.out.println("Key: " + i + " Value: " + Arrays.toString(map.get(i)));
}
而這裏的輸出:
[0, 0, 0]
[1, 1, 1]
[2, 2, 2]
[3, 3, 3]
[4, 4, 4]
Key: 0 Value: [4, 4, 4]
Key: 1 Value: [4, 4, 4]
Key: 2 Value: [4, 4, 4]
Key: 3 Value: [4, 4, 4]
Key: 4 Value: [4, 4, 4]
你爲什麼期望不同的值?你在這裏操作了多少個int []對象? –