Moin moin!
Ich will eine ArrayList so kopieren, dass die Kopie von der ursprünglichen ArrayList vollständig unabhängig ist.
Ich habe probiert die ArrayList so zu klonen was aber nicht funktioniert:
ArrayList<Name> neueListe;
neueListe=(ArrayList<Name>) alteListe.clone();
Unter diesem Link http://www.dpunkt.de/java/Programmieren_mit_Java/Streams/9.html#LABOBJECTSTREAMS
(dann ganz unten auf der Seite)
habe ich gelesen, daß man das zu kopierende Objekt mit Streams kopieren soll. Das habe ich so umgesetzt:
Das funktioniert aber auch nicht, weil beim kopieren irgendwas falsch läuft. Ich kriege beim "listeNeu.get(0).getName()" eine NullPointerException.
Hat vielleicht Jemand ein Idee?
Vieln Dank!
Timo
Ich will eine ArrayList so kopieren, dass die Kopie von der ursprünglichen ArrayList vollständig unabhängig ist.
Ich habe probiert die ArrayList so zu klonen was aber nicht funktioniert:
ArrayList<Name> neueListe;
neueListe=(ArrayList<Name>) alteListe.clone();
Unter diesem Link http://www.dpunkt.de/java/Programmieren_mit_Java/Streams/9.html#LABOBJECTSTREAMS
(dann ganz unten auf der Seite)
habe ich gelesen, daß man das zu kopierende Objekt mit Streams kopieren soll. Das habe ich so umgesetzt:
Code:
ArrayList<Name> listeNeu=null;
ArrayList<Name> listeAlt= new ArrayList<Name>();
listeAlt.add(new Name("NameNeu"));
try{
// ObjectOutputStream erzeugen
ByteArrayOutputStream bufOutStream = new ByteArrayOutputStream();
ObjectOutputStream outStream = new ObjectOutputStream(bufOutStream);
// Objekt im byte-Array speichern
outStream.writeObject(listeAlt);
// Pufferinhalt abrufen
byte[] buffer = bufOutStream.toByteArray();
// ObjectInputStream erzeugen
ByteArrayInputStream bufInStream = new ByteArrayInputStream(buffer);
ObjectInputStream inStream = new ObjectInputStream(bufInStream);
// Objekt wieder auslesen
listeNeu = (ArrayList<Name>)inStream.readObject();
outStream.close();
}catch (Exception e){}
listeAlt.get(0).setName("NameNeu");
System.out.println(listeNeu.get(0).getName());
Hat vielleicht Jemand ein Idee?
Vieln Dank!
Timo