Hallo Forum Mitglieder,
ich bin Java Anfänger und versuch ein Objekt in einer „ArrayListe“ zu verwalten.
Ein Objekt erstellen, löschen, ändern und suchen in der „ArrayListe“ klappt.
Das Speicher und Laden der Liste als XML Datei mit „XMLEncoder“ funktionier auch.
Nun wollte ich das Sortieren der Liste machen was auch klappt. Aber wen ich jetzt die Liste Speichere und das Programm neu Starte und die Daten neu Laden sind alle sortierten Daten in der Liste Doppelt?????
Wie kann ich verhindern das die Sortier Informationen mit gespeichert erden und dadurch die Doppelten Objekt beim einlesen entstehen.
Danke für eure Hilfe im vorraus.
Nun kommt der Quelltext vom Speichern und Laden der Liste
Meine Sortierung
Die gespeicherte XML Datei.
[XML] <?xml version="1.0" encoding="UTF-8" ?>
- <java version="1.7.0" class="java.beans.XMLDecoder">
- <object class="Kassenbuch.objekt.Konto" id="Konto0">
- <void property="kontobeschreibung">
<string>Beschreibung2</string>
</void>
- <void property="kontonummer">
<int>1</int>
</void>
</object>
- <object class="Kassenbuch.objekt.Konto" id="Konto1">
- <void property="kontobeschreibung">
<string>Beschreibung1</string>
</void>
- <void property="kontonummer">
<int>2</int>
</void>
</object>
- <object class="Kassenbuch.objekt.Konto" id="Konto2">
- <void property="kontobeschreibung">
<string>Beschreibung3</string>
</void>
- <void property="kontonummer">
<int>3</int>
</void>
</object>
<object idref="Konto2" />
<object idref="Konto1" />
<object idref="Konto0" />
</java>[/XML]
ich bin Java Anfänger und versuch ein Objekt in einer „ArrayListe“ zu verwalten.
Ein Objekt erstellen, löschen, ändern und suchen in der „ArrayListe“ klappt.
Das Speicher und Laden der Liste als XML Datei mit „XMLEncoder“ funktionier auch.
Nun wollte ich das Sortieren der Liste machen was auch klappt. Aber wen ich jetzt die Liste Speichere und das Programm neu Starte und die Daten neu Laden sind alle sortierten Daten in der Liste Doppelt?????
Wie kann ich verhindern das die Sortier Informationen mit gespeichert erden und dadurch die Doppelten Objekt beim einlesen entstehen.
Danke für eure Hilfe im vorraus.
Nun kommt der Quelltext vom Speichern und Laden der Liste
Java:
public void ObjectSichern (List<AbstractBasis> basisListe, String filename){
XMLEncoder enc = null;
try {
enc = new XMLEncoder (new DataOutputStream( new BufferedOutputStream( new FileOutputStream (filename) ) ));
for (AbstractBasis listObject : basisListe){
enc.writeObject(listObject);
}
enc.flush();
enc.close();
} catch (IOException e) {
System.out.println("Fehler beim Erstellen der Datei :_ "+e);
}
}
public List<AbstractBasis> ObjectLesen( String filename) {
XMLDecoder dec = null;
AbstractBasis line =null;
basisListe.clear();
try {
dec = new XMLDecoder(new DataInputStream( new BufferedInputStream( new FileInputStream (filename) ) ));
while(null != ( line =(AbstractBasis) dec.readObject())) {
basisListe.add((AbstractBasis)line);
}
dec.close();
} catch (IOException e) {
System.out.println("Fehler beim Erstellen der Datei :_ "+e);
} catch (Exception e){
if (e.equals("java.lang.ArrayIndexOutOfVoundsEception ??")) {
System.out.println("Exeption e :_"+e);
}
}
return basisListe;
}
Meine Sortierung
Java:
package Kassenbuch.Sort;
import java.util.Comparator;
import Kassenbuch.objekt.Konto;
public class SortKontoToNrUp implements Comparator <Konto>
{ @Override public int compare(Konto konto1, Konto konto2) {
if (konto1.getNr() < konto2.getNr()) return -1;
else if (konto1.getNr() == konto2.getNr()) return 0;
else return 1;
}
}
Die gespeicherte XML Datei.
[XML] <?xml version="1.0" encoding="UTF-8" ?>
- <java version="1.7.0" class="java.beans.XMLDecoder">
- <object class="Kassenbuch.objekt.Konto" id="Konto0">
- <void property="kontobeschreibung">
<string>Beschreibung2</string>
</void>
- <void property="kontonummer">
<int>1</int>
</void>
</object>
- <object class="Kassenbuch.objekt.Konto" id="Konto1">
- <void property="kontobeschreibung">
<string>Beschreibung1</string>
</void>
- <void property="kontonummer">
<int>2</int>
</void>
</object>
- <object class="Kassenbuch.objekt.Konto" id="Konto2">
- <void property="kontobeschreibung">
<string>Beschreibung3</string>
</void>
- <void property="kontonummer">
<int>3</int>
</void>
</object>
<object idref="Konto2" />
<object idref="Konto1" />
<object idref="Konto0" />
</java>[/XML]