Java:
//Initialisierung
int[] a = { 1, 2 };
int[] b = { 2, 1 };
int[] c = { 3, 4, };
int[] d = { 5, 6 };
int[][] dominoes = { a, b, c, d };
//neues array tmp (Kopie von dominoes) erstellen
int[][] tmp = Arrays.copyOf(dominoes, dominoes.length);
System.out.println(Arrays.deepToString(dominoes));
//Ausgabe: [[1, 2], [2, 1], [3, 4], [5, 6]]
//einzelne Elemente der Arrays in tmp vertauschen und auf ne HashMap adden
for (int i = 0; i < dominoes.length; i++) {
swap(tmp[i]);
map.put(tmp[i], i);
}
//Ausgabe der Hashmap keys
for (int[] key : map.keySet()) {
System.out.println(Arrays.toString(key));
}
//Ausgabe: [2, 1] [1, 2] [4, 3] [6, 5]
//Ausgabe des (unveränderten?) dominoes array
System.out.println(Arrays.deepToString(dominoes));
//Ausgabe: [[2, 1], [1, 2], [4, 3], [6, 5]]
public void swap(int[] in) {
int temp = in[0];
in[0] = in[1];
in[1] = temp;
}
Jetzt zu meiner Frage:
Wieso wird das Dominoes array verändert, obwohl ich doch nur aufs tmp array zugreife und dort die elemente vertausche?
Ich weiß zwar wie ich es löse, aber wieso ist das so? Zeigt die Kopie des Arrays auf die selben Elemente im Speicher?
Zuletzt bearbeitet: