T
TommyBoy66
Gast
Hallo ihr Java-Profis,
ich habe ein Problem mit einer ArrayList. Und zwar möchte ich dieses in einer Schleife mit einem 2-dimensionalem Integer-Array füllen. Das Problem ist, dass in meiner Konstruktion laut Debugger nur die Referenz auf das Objekt übergeben wird und nicht, dass Objekt selber. Am Besten ich poste mal etwas Quellcode um das zu verdeutlichen:
Der Code funktioniert soweit bis auf die markierte Stelle. Hier wird coord[0][1] überschrieben (soll ja auch so sein) nur soll es nicht sein, dass das Objekt in der ArrayList sich dann ebenfalls ändert. Ich habe dann praktisch beim 2. add 2mal dasselbe Array in der ArrayList. Es scheint also nur eine Referenz auf das Objekt in der ArrayList zu stehen. Wie kann ich das verhindern bzw. gibt es eine bessere Möglichkeit 2 Integer-Variablen (zusammengehörige x- und y-Koordinaten) in eine ArrayList zu bekommen. Wäre über jede Hilfe dankbar.
MfG
TommyBoy
PS: Falls ich irgendetwas vergessen habe zu posten bitte nochmal nachfragen :wink:
ich habe ein Problem mit einer ArrayList. Und zwar möchte ich dieses in einer Schleife mit einem 2-dimensionalem Integer-Array füllen. Das Problem ist, dass in meiner Konstruktion laut Debugger nur die Referenz auf das Objekt übergeben wird und nicht, dass Objekt selber. Am Besten ich poste mal etwas Quellcode um das zu verdeutlichen:
Code:
ArrayList<Integer[][]> tmpEmptyFields = new ArrayList<Integer[][]>();
CardResource tmpCard;
Integer coord[][] = new Integer[1][2];
Iterator fcit = fieldCards.entrySet().iterator(); //Iterator für eine HashMap von Objekten
while ( fcit.hasNext()){
Map.Entry<Integer, Card> entry = (Map.Entry<Integer,Card>) fcit.next();
tmpCard = (CardResource)entry.getValue();
if (tmpCard.getName().equalsIgnoreCase("CITY")){
//linke und rechte Felder werden bestimmt
coord[0][0] = tmpCard.getXpos()-1;
coord[0][1] = tmpCard.getYpos();
tmpEmptyFields.add(coord );
coord[0][1] = tmpCard.getYpos()+1; //hier ist das Problem
tmpEmptyFields.add(coord);
}
}
Der Code funktioniert soweit bis auf die markierte Stelle. Hier wird coord[0][1] überschrieben (soll ja auch so sein) nur soll es nicht sein, dass das Objekt in der ArrayList sich dann ebenfalls ändert. Ich habe dann praktisch beim 2. add 2mal dasselbe Array in der ArrayList. Es scheint also nur eine Referenz auf das Objekt in der ArrayList zu stehen. Wie kann ich das verhindern bzw. gibt es eine bessere Möglichkeit 2 Integer-Variablen (zusammengehörige x- und y-Koordinaten) in eine ArrayList zu bekommen. Wäre über jede Hilfe dankbar.
MfG
TommyBoy
PS: Falls ich irgendetwas vergessen habe zu posten bitte nochmal nachfragen :wink: