我不喜欢forEach的部分,但我不知道如何用lambda做得更好.
list1.stream().map(element -> {
list2.forEach(item -> {
if (element.getKey().equals(item.getKeyNextYear())) {
element.setSummPreviosYear(item.getSumm());
element.setCashboxCountPreviosYear(item.getCashboxCount());
element.setCheckCountPreviosYear(item.getCheckCount());
element.setArticleCountPreviosYear(item.getArticleCount());
}
});
return element;
}).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
您可以通过删除外部流并使用filter().findAny()搜索执行内部部分来简化此操作.如果list2中的多个项与元素匹配,这也可以防止重新设置属性.
list1.forEach(element ->
list2.stream()
.filter(item -> element.getKey().equals(item.getKeyNextYear()))
.findAny()
.ifPresent(item -> {
element.setSummPreviosYear(item.getSumm());
element.setCashboxCountPreviosYear(item.getCashboxCount());
element.setCheckCountPreviosYear(item.getCheckCount());
element.setArticleCountPreviosYear(item.getArticleCount());
}));
Run Code Online (Sandbox Code Playgroud)
没有必要将list1流式传输并将其收集到一个新列表中,至少从您的示例代码中不清楚.原始列表仍将包含与新列表相同的元素,包括已更改的属性.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |