gpt4 book ai didi

lambda - 我可以在 reduce 操作中对 lambda 表达式设置条件吗?

转载 作者:行者123 更新时间:2023-12-01 15:16:17 27 4
gpt4 key购买 nike

我可以跳过 lambda 表达式中第一个流的某些操作吗?
例如

List<BeanClass> fetch = getBeanClsss();
BeanClass bean = fetch.stream().reduce(newBean, (p1,p2)-> {
p1.setVal(p1.getVal() + p2.getVal());
// if first element skip
// else
p1.setValNum(p1.getValNum() + p2.getValNum());
return p1;
});

在第一个元素中,我不想运行 p1.setValNum 方法而是运行 p1.setVal 方法。所以我想用第一个方法以外的所有方法。

最佳答案

不要使用 reduce用于可变减少。如果该流曾经是并行的,您将得到不可预测的结果。您没有指定 getVal 的返回类型和 getValNum ,所以我假设它们都返回 int .如果你想澄清你的问题,我会相应地调整答案。

int sumVal = fetch.stream()
.mapToInt(BeanClass::getVal)
.sum();

int sumValNum = fetch.stream()
.skip(1) // now skipping the first one is straightforward!
.mapToInt(BeanClass::getValNum)
.sum();

newBean.setVal(newBean.getVal() + sumVal);

newBean.setValNum(newBean.getValNum() + sumValNum);

关于lambda - 我可以在 reduce 操作中对 lambda 表达式设置条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46358721/

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