Java 是否有方法更改Lambda表达式中的值?
我想使用for循环来更改feeAumount和消息,但我想使用Lambda(默认情况下,所有变量都是Lambda中的final)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(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;