Java 是否有方法更改Lambda表达式中的值?

Java 是否有方法更改Lambda表达式中的值?,java,lambda,Java,Lambda,我想使用for循环来更改feeAumount和消息,但我想使用Lambda(默认情况下,所有变量都是Lambda中的final) 流不是每个用例的理想选择,实际上我更喜欢在这里为循环使用简单的增强型: for(GridFeeEntity:GridFeeEntity){ if(“T”.equals(entity.getType())){ 金额+=1; } else if(“P”.equals(entity.getType())){ 金额+=2; } 否则{ message=“不支持”; } }

我想使用for循环来更改feeAumount和消息,但我想使用Lambda(默认情况下,所有变量都是Lambda中的final)


流不是每个用例的理想选择,实际上我更喜欢在这里为循环使用简单的增强型

for(GridFeeEntity:GridFeeEntity){
if(“T”.equals(entity.getType())){
金额+=1;
}
else if(“P”.equals(entity.getType())){
金额+=2;
}
否则{
message=“不支持”;
}
}

这是一个清晰易读的文件,它的性能应该和流式文件一样好,特别是对于较小的集合。

除了Tim的答案,我建议考虑将逻辑颠倒过来。(请注意,您的“消息”位几乎肯定是一个例外。)


…和
FeeList#forType
将返回整数,前提是实体类型抽象出核心逻辑。是的,我最终以这种方式返回了整数。
        gridFeeEntity.stream().forEach(entity -> {
        if ("T".equals(entity.getType())){

            feeAmount += 1;

        }else if ("P".equals(entity.getType())) {

            feeAmount += 2;

        } else {
            message = "not Supported";
        }
    });
int feeIncrease = gridFeeEntities.stream()
  .map(GridFeeEntity::getType)
  .mapToInt(FeeList::forType)
  .sum();

feeAmount += feeIncrease;