ArrayList Nachfrage

Xerxess81

Grünschnabel
Ich habe eine ArrayList erstellt, in der ich Objekte der Klasse Daten speichern möchte. nun habe ich die Liste so initialisiert:

Daten neu = new Daten();
ArrayList<Daten> liste = new ArrayList<Daten>();

soweit so gut.

nun wollte ich verschiedene Dinge in der Liste speichern wie man sich denken kann. Dazu folgte dieses:

while ((ein = datei.readLine()) != null) //Zeilenwechsel einer Datei
{
.....

neu.daten(volumen, name, domain, ip, url); //Hier übergeb ich Parameter, die im Objekt Daten gespeichert werden.

liste.add(neu); //Die Liste wird mit dem Objekt gefüllt
}
System.out.println(liste);

Wenn ich mir jetzt die Liste anzeigen lasse werden mir dort nicht pro Listenplatz unterschiedliche Daten angezeigt, sondern alle Plätze haben den gleichen Inhalt. Immer gleiche Namen, gleich Domain..... Was könnte ich da vergessen haben?
 

Xandro

- Mistkerl -
Moin,

ein wenig rar der Code aber naja.

Erst einmal fällt mir auf, dass Du immer ein und dasselbe Objekt in Deiner Liste speicherst.
Du solltest schon ein neues Objekt übergeben à la:

Code:
while ((ein = datei.readLine()) != null)
{
 [...]
 Daten new = new Daten(Parameter);
 liste.add(new);

 liste.add(new Daten(Parameter)); // abgespeckte Version
}

Überprüfe aber bitte auch Deine Paramater, ob diese sich wirklich ändern, z.B. mit println().

Gruß,
Xan
 

Xerxess81

Grünschnabel
Schade, es hörte sich nach einer Lösung an, war es aber leider nicht...

Ich habe mir auch mal die Parameter angeschaut, und mir die in jedem Durchlauf angeben lassen, diese sind in jedem Durchlauf auch anders.

Die Liste jedoch enthält immernoch die gleichen Objekte, keine Unterschiede. An jeder Position steht immer das allerletzte Objekt, d.h. dass auch an der ersten Position der Liste der Inhalt der letzten Position steht.....
Genauerer Aufbau der Schleife:

while ((ein = datei.readLine()) != null)
{
Festlegen der Parameter;
Daten neu = new Daten(Parameter);

liste.add(neu);
liste.add(new Daten(Parameter);
}

Die Liste hat sich auch wunderbar dynamisch erweitert, jedoch steht an jeder Position das zuletzt erstellte Objekt.
 

zerix

Hausmeister
Moderator
Hallo,

vielleicht solltest du mal die ganze while-Schleife mal posten.
Das ganze wird daran liegen, dass in jedem Daten-Object, das gleiche Object ist. Wenn du dann halt einmal die Daten änderst, sind sie bei allen Feldern in der Liste geändert.

MFG

Sascha
 

Xerxess81

Grünschnabel
Dummer Fehler meinerseits:
Die Eigenschaften in der Klasse Daten waren static,
somit war es klar, dass sich immer wieder alles überschreibt.....

Ich bedanke mich an dieser Stelle für eure Mühe und entschuldige mich für meinen Fehler.