【发布时间】:2016-07-12 04:54:34
【问题描述】:
我找到了以下代码,它在某些情况下(如果它不是旧的)将一个项目添加到列表中。之后这个列表会被打包到一个通用的控件列表中。
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));
问题出在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;
}
在继续的情况下我可以做什么?返回空?然后我可以通过
从流中过滤空值list.stream().filter( Objects::nonNull )
这里可以选择使用 Optionals 吗?
【问题讨论】:
标签: java java-8 refactoring java-stream