1Danke
ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
528
528
EMPFEHLEN
-
07.01.12 22:26 #1
- Registriert seit
- Jun 2011
- Beiträge
- 5
Schönen guten Abend,
ich verzweifel gleich beim programmieren, habe noch nie mit einer ArrayList oder ähnlichen programmiert, wär toll wenn mir jemand helfen könnte.
ich hab folgendes Problem mit einer ArrayList...ich würde gerne Werte in eine ArrayList speichern, eigentlich klappt auch alles. Die ArrayList erhöht auch ihren size() um eins wenn ich ein neues Objekt dazufüge. Nur leider überschreibt sie alle Plätze mit dem neuen Element
Hier mal mein Code: (Auszüge)
Erst die Klasse die die Liste enthält
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
public class Database { private ArrayList <Recipe> recipecollection = new ArrayList<Recipe>(); //Objekt wird bei jeden Aufruf neu überschrieben**** public void setRecipelist(Recipe recipe) { recipecollection.add(recipe); print(); } public void print() { for(int i =0; i<recipecollection.size();i++) { System.out.println("Gericht "+" "+recipecollection.get(i)); /* * Erklärung: * Beim ersten aufruf steht hier z.B. "a" * beim zweiten steht dann nicht "a b" sondern "b b" */ System.out.println(recipecollection.size()); //größe wächst bei jeden neu anlegen } }
nun die Klasse mit der in ein Object (Recipe) in die Liste hinzufüge
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
public class MvController { private MainGui start = new MainGui(); private Recipe recipe = new Recipe (); private Database data = new Database(); private void setStart() { //Startoberfläche wird erzeugt start.setStartGui(); } public void investRecipe(String name, String ingridend, String unit, int amount, String descri) { recipe.setName(name); recipe.setIngredient(ingridend); recipe.setUnit(unit); recipe.setAmount(amount); recipe.setDescription(descri); data.setRecipelist(recipe); //auf getter und setter von Recipe zugreifen }
Die klasse Recipe und wie die Daten kommen ist hierfür egal weil ja was ankommt
Vielen Dank schon mal für eure Hilfe
-
07.01.12 23:20 #2
Da ist aber kein Fehler, das funktioniert alles, wie es soll. Sicher, dass du da nicht noch andere Sachen machst?
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
07.01.12 23:25 #3
Hi,
dein Problem ist eigentlich ganz einfach.
Zu erst einmal ist es wichtig zu wissen, dass in einer List nur die Referenz zu einem Objekt gespeichert wird. D.h. beim hinzufügen eines Objektes wird nur die Referenz und nicht das Objekt an sich gespeichert.
In deinem Code benutzt du das Objekt Recipe, welches du 1 mal initialisierst.
In der List wird nun auf diese eine Instanz referenziert. Wenn du nun in deiner Methode "investRecipe(...)" den Namen, etc. für dein Objekt setzt, überschreibst du die Werte in deiner Variable/Objekt "recipe". Dadurch bekommst du zwar mehr Referenzen in deiner List, allerdings verweisen alle auf ein und das selbe Objekt. Daher wächst zwar die size() an, die Werte die ausgegeben werden, sind aber bei allen die gleichen.Code java:1
private Recipe recipe = new Recipe ();
Damit du dein gewünschtes Ergebnis erziehlen willst, musst du einfach für jedes Rezept ein neues Objekt anlegen und schon funktionierts auch.
Code java:1 2 3 4 5 6 7 8 9 10
public void investRecipe(String name, String ingridend, String unit, int amount, String descri) { Recipe recipe = new Recipe (); recipe.setName(name); recipe.setIngredient(ingridend); recipe.setUnit(unit); recipe.setAmount(amount); recipe.setDescription(descri); data.setRecipelist(recipe); }
Gruß
FabioGeändert von Fabio Hellmann (07.01.12 um 23:27 Uhr)
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
07.01.12 23:33 #4
Verdammt, Fabio ist wieder zuvor gekommen ... Das wollte ich auch grad schreiben>.<
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
07.01.12 23:53 #5
- Registriert seit
- Jun 2011
- Beiträge
- 5
Super Sache...Vielen Dank, mir fällt ein Stein vom Herzen...Beste Grüße
Ähnliche Themen
-
[BATCH] Copy -> kann sich nicht selbst auf sich schreiben ? o.O
Von Alex Großmann im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 13.07.11, 14:58 -
JTable - 2D ArrayList schreibt sich selber ins Table.
Von Shidan im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 5Letzter Beitrag: 07.07.11, 10:39 -
PC schaltet sich selbst ab!
Von Ich_halt224 im Forum Microsoft WindowsAntworten: 17Letzter Beitrag: 09.12.05, 13:25 -
Bei jeden Aufruf ein anderes Bild anzeigen
Von SbNipp im Forum PHPAntworten: 9Letzter Beitrag: 05.09.04, 10:04





Zitieren
Login





