Hallo zusammen,
ich habe folgende verschachtelte Schleife:
/**
* In dieser Methode werden diejenigen Zeilen zu einer zusammegefasst, die unterschiedliche, aber unmittelbar aufeinanderfolgende
* Gütigkeitsbereiche haben.
*
* @param distinctBlmDataList
* @return die aggregierte BLM-Daten-Liste.
*/
private List<BlmDaten> aggregateBlmData(ArrayList<BlmDaten> distinctBlmDataList) {
List<BlmDaten> aggregatedBlmDataList = distinctBlmDataList;
// Alle BlmDaten in ein Array kopieren:
final BlmDaten[] blmDatenArray = distinctBlmDataList.toArray(new BlmDaten[distinctBlmDataList.size()]);
for (int i = 0; i < blmDatenArray.length; i++) {
BlmDaten daten = blmDatenArray**;
for (int j = 0; j < blmDatenArray.length; j++) {
BlmDaten successor = blmDatenArray[j];
if ((!daten.equals(successor)) && (daten.isAppendable(successor))) {
daten.setGueltigBis(successor.getGueltigBis());
aggregatedBlmDataList.remove(successor);
}
}
}
return aggregatedBlmDataList;
}
Ziel der Methode: ich habe eine Liste von Daten, in der bis auf den Gültigkeitsbereich alle Daten gleich sind. Wenn der Gültigkeitsbereich aufeinanderfolgt (
Satz 1 gueltigVon = 01.02.2014 gueltigBis = 31.03.2014
Satz 2 gueltigVon = 01.04.2014 gueltigBis = 30.04.2014
etc… das können 1-n Sätze sein die gleich sind.
Diese Sätze möchte ich dann zu einem Objekt zusammenfassen und das niedrigste gueltigVon und das höchste gueltigBis-Datum setzen. Im oben genannten Beispiel wäre das dann de Satz mit gueltigVon = 01.02.2014 und gueltigBis = 30.04.2014
Gibt es eine bessere Möglichkeit als die verschachtelten Schleifen? Teilweise kommen an die 1000 Datensätze zurück, was das ganze sehr langsam macht.
die Methode isAppendable ist implementiert wie die equals-Methode, nur das dabei der Gültigkeitsbereich mit berücksichtigt wird.
Wenn jemand eine Idee hat, das ganze performancetechnisch zu optimieren, wäre ich echt dankbar! Ich hoffe ich konnte es verständlich erklären.