tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Fabio Hellmann
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
528
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    gelbe_decke gelbe_decke ist offline Rookie
    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
     

  2. #2
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    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 ;)

  3. #3
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist gerade online Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    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.
    Code java:
    1
    
    private Recipe recipe = new Recipe ();
    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.

    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ß

    Fabio
    Geändert von Fabio Hellmann (07.01.12 um 23:27 Uhr)
    gelbe_decke bedankt sich. 
    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.

  4. #4
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    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 ;)

  5. #5
    gelbe_decke gelbe_decke ist offline Rookie
    Registriert seit
    Jun 2011
    Beiträge
    5
    Super Sache...Vielen Dank, mir fällt ein Stein vom Herzen...Beste Grüße
     

Ähnliche Themen

  1. [BATCH] Copy -> kann sich nicht selbst auf sich schreiben ? o.O
    Von Alex Großmann im Forum Microsoft Windows
    Antworten: 0
    Letzter Beitrag: 13.07.11, 14:58
  2. JTable - 2D ArrayList schreibt sich selber ins Table.
    Von Shidan im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 07.07.11, 10:39
  3. PC schaltet sich selbst ab!
    Von Ich_halt224 im Forum Microsoft Windows
    Antworten: 17
    Letzter Beitrag: 09.12.05, 13:25
  4. Antworten: 9
    Letzter Beitrag: 05.09.04, 10:04

Stichworte