Ho trovato il seguente codice, che aggiunge un elemento in determinate circostanze (se non è VECCHIO) a un elenco. Questo elenco viene inserito in una lista di controlli comuni in seguito.Creazione del refactoring di un elenco con java 8 stream
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));
ho provato la seguente refactoring utilizzando flussi java8:
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));
Il problema è il metodo map ...
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;
}
Cosa posso fare nei casi di continuare? restituire null? Potrei quindi filtrare Valori nulli dallo stream tramite
list.stream().filter(Objects::nonNull)
L'opzione Optional è un'opzione qui?
Questo dovrebbe funzionare. Non pensi che sia un po 'difficile da leggere? La mia soluzione sembra un po 'più leggibile. Anche se non sono ancora sicuro di cosa fare con il "ritorno null" in questo caso. – Chris311
@ Chris311 La tua soluzione è davvero un mix del tuo vecchio codice. Penso che sia un po 'difficile da leggere, quindi tenere il tuo ciclo non sarebbe una cattiva idea. – Tunaki
Ok, non userò java8 stream-refactoring qui :-) – Chris311