gpt4 book ai didi

java - 我如何使用 lambda 更好地做到这一点?

转载 作者:行者123 更新时间:2023-12-02 08:38:10 25 4
gpt4 key购买 nike

我不喜欢 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());

最佳答案

您可以通过删除外部流并使用 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());
}));

不需要流式传输 list1 并将其收集到新列表中,至少从示例代码中还不清楚。原始列表仍将包含与新列表相同的元素,包括更改的属性。

关于java - 我如何使用 lambda 更好地做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47472157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com