特定の状況(OLDでない場合)のリストをリストに追加する次のコードが見つかりました。このリストは後で共通のコントロールリストにまとめられます。Java 8ストリームのリストのリファクタリングの作成
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));
私は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));
問題は、マップ・メソッドです...
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;
}
を私は続ける場合に何ができますか? nullを返しますか?ストリームからnull値をフィルタリングすることができます
list.stream().filter(Objects::nonNull)
ここでオプションを使用するオプションはありますか?
これは動作するはずです。読めるのが一種難しいと思いませんか?私のソリューションは少し読みやすくなっています。この場合、 "return null"をどうすればいいのかまだ分かりませんが。 – Chris311
@ Chris311あなたの解決策は、あなたの古いコードを実際に組み合わせたものです。私は読むのが難しいと思うので、あなたのforループを保つことは悪い考えではありません。 – Tunaki
私はここでjava8ストリームリファクタリングを使用しません:-) – Chris311