Mittwoch, 7. November 2012

Java: Deep Copy von Listen

Eine "tiefe" Kopie einer beliebigen Liste in Java ist gar nicht so selbstverständlich wie man meinen möchte, die meisten Ansätze kopieren nämlich zwar die Liste, aber der Inhalt bleibt Referenz und somit wird die Kopie nicht "tief".

Eine kleine Methode löst mir das Problem:

public static List<ResultLine> deepCopyListResultLine(List<ResultLine> list) {
  List<ResultLine> resList = new ArrayList<ResultLine>();
  for (ResultLine line : list) {
   resList.add(new ResultLine(line));
  }
  return resList;
 }


Voraussetzung ist natürlich dass das Objekt über einen Konstruktor verfügt der diese Art der Duplizierung möglich macht:

public class ResultLine implements Serializable {

 public ResultLine() {

 }

 public ResultLine(ResultLine line) {
  this.plz = line.getPlz();
  this.app = line.getApp();
  this.eighty = line.getEighty();
  this.eightyAnz = line.getEightyAnz();
  this.firstTen = line.getFirstTen();
  this.firstTenAnz = line.getLastTenAnz();
  this.lastTen = line.getLastTen();
  this.lastTenAnz = line.getLastTenAnz();
  this.ldkz = line.getLdkz();
  this.makler = line.isMakler();
  this.mobile = line.isMobile();
  this.sessionAnz = line.getSessionAnz();
 }

Auf diese Weise ist ein "tiefes" Kopieren kein Problem mehr.

Keine Kommentare:

Kommentar veröffentlichen