Ich fand den folgenden Code, der ein Element unter bestimmten Umständen (wenn es nicht OLD ist) zu einer Liste hinzugefügt. Diese Liste wird danach in eine gemeinsame Kontrollliste gepackt.Refactor Erstellung einer Liste mit Java 8 Streams
List<ListDataContent> list = new ArrayList<>();
for (KonditionValue kondition : konditions) {
if (kondition.getStatusKz().equals(StatusKz.OLD))
continue;
for (TermKondValue tilg : kondition.getTermimKonditions()) {
if (tilg.getStatusKz().equals(StatusKz.OLD))
continue;
TerminKondListContent listContent = new TerminKondListContent(tilg, kondition.getChangeDatum(), funds);
list.add(listContent);
}
}
SimpleListControl listCtrl = new SimpleListControl();
listCtrl.setDataModel(new ListDataModel(list));
habe ich versucht, die folgende Refactoring java8 Streams mit:
List<ListDataContent> list = konditionen.stream().map(kondition -> map(tilg, kondition.getChangeDate(), funds)).sorted().collect(Collectors.toList());
SimpleListControl listCtrl = new SimpleListControl();
listCtrl.setDataModel(new ListDataModel(list));
Das Problem ist die Karte Methode ...
private TerminKondListContent map(TermKondValue tilg, Date changeDate, BigDecimal funds) {
if (kondition.getStatusKz().equals(StatusKz.OLD))
return null;
for (TermKondValue zins : kondition.getTerminkonditions()) {
if (zins.getStatusKz().equals(StatusKz.OLD))
return null;
return new TerminKondListContent(tilg, changeDate, funds);
}
return null;
}
Was kann ich in den weiterhin Fällen tun? null zurückgeben? Ich könnte dann null Werte aus dem Stream über
filtern Ist die Verwendung von Optionals eine Option hier?
Dies sollte funktionieren. Denkst du nicht, dass es schwer zu lesen ist? Meine Lösung sieht ein wenig lesbarer aus. Ich bin mir immer noch nicht sicher, was ich in diesem Fall mit dem "Return-Null" tun soll. – Chris311
@ Chris311 Ihre Lösung ist wirklich eine Mischung aus Ihrem alten Code. Ich denke, es ist etwas schwer zu lesen, daher wäre es keine schlechte Idee, Ihre For-Schleife zu behalten. – Tunaki
Ok, ich werde hier kein java8 stream-refactoring verwenden :-) – Chris311