scue schrieb:
zu der anderen variante:
wenn ich mit remove arbeite, wäre es ja schlauer vorher eine kopie der liste anzufertigen oder? wie würde das denn gehen, habe gerade bei google gesucht und da steht was von clone(), da man in java nicht so einfach objekte kopieren kann
Zu clone():
Sicherlich keine schlechte Variante... Die Frage ist ob eine Sicherung deiner ArrayList notwendig ist. Das solltest du für dich selbst entscheiden, je nachdem was dein Programm machen soll. Auch eine ArrayList enthält nur Referenzen auf die enthaltenen Objekte, d.h. du solltest immer im Hintergrund behalten, dass wenn eine Referenz "gekappt" wird, dieses Objekt auch nicht mehr so existiert.
Aber nun zu clone() zurück im Falle dass du eine Kopie anfertigen willst:
clone() ist eine Methode von java.lang.Object, d.h. jedes Objekt in Java hat diese Methode.
Nehmen wir einen Punkt aus der AWT Bibliothek mit den Koordinaten 12, 23, welche beim Anlegen dem Konstruktor übergeben werden. Jetzt sagen wir: wir wollen unser eben angelegtes Objekt clonen, d.h. den momentanen Objektzustand in eine weitere Instanz vom selben Typ schreiben/speichern/zuweisen. Da die clone() Methode als Rückgabewert immer :Object hat, wird per explizieter Typkonvertierung noch gesagt um welches Object es sich handelt. Geben wir das Object aus hat es dieselben Werte wie das ursprüngliche Objekt.
Code:
java.awt.Point p = new java.awt.Point( 12, 23 );
java.awt.Point q = (java.awt.Point) p.clone();
System.out.println( q ); // java.awt.Point[x=12,y=23]
Wichtig dabei: clone() liefert dir sozusagen bei Arrays die
NICHT primitive Datentypen speichern nur eine Art "flache Kopie", d.h. es wird die Struktur des Arrays/ArrayList "gecloned", aber nicht dessen Inhalte! Das sind nur weitere Zeiger auf die existierende Objekte!
Kleiner Tipp:
Schau dir die Collections nochmal an, erst in der API, dann in bestimmten Beispielen(google!) in denen Collections eingesetzt werden. Mach dir die Funktionsweise und die Anwendung bewusst. Ich hab momentan ein bisschen das gefühl dass du ohne notwendiges Vorwissen (über Arrays z.b.) in die Welt der Collections einsteigen willst, was nicht umbedingt ratsam ist.
Achja und zu deiner Pyramide: das kannst du über den Index lösen. Stichwort Modulo Operator. Hoffe das reicht dir als Gedankenstütze...
Und fürs nächste mal wäre es sinnvoller deinen bisherigen Code zu posten, damit nicht der Eindruck entsteht dass wir deine Hausaufgaben lösen sollen...