You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于对象一个属性的值设置另一属性,及Java Stream Lambda等效写法

Java 遍历对象列表按条件赋值的Stream Lambda写法

问题说明

要实现的逻辑是:遍历对象列表,判断对象某一属性的取值,满足条件时为该对象的另一属性赋值,原for循环写法如下:

List<OptionOverrideChangeOrderModel> quoteOptions = 
Collections.singletonList(quoteOption);
        
for (OptionOverrideChangeOrderModel option : quoteOptions) {
    if (option.getFet() > 0) {
        option.setApplyFet(true);
    }
}

对应Stream Lambda实现

写法1:标准Stream流写法

适合后续还要对流做映射、排序、聚合等其他操作的场景,先筛选符合条件的元素再执行赋值:

quoteOptions.stream()
    .filter(option -> option.getFet() > 0)
    .forEach(option -> option.setApplyFet(true));

写法2:List直接调用forEach

仅做遍历赋值时推荐用该写法,不需要额外生成流对象,性能更好、代码更精简:

quoteOptions.forEach(option -> {
    if (option.getFet() > 0) {
        option.setApplyFet(true);
    }
});

注意事项

  • 两种写法都和原for循环逻辑完全等价,都是直接修改原列表中的对象,不会生成新的集合
  • 操作会改变原对象的属性值,若需要保留原对象的原始状态,需要先拷贝对象再做处理

内容的提问来源于stack exchange,提问作者Tony Neves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:09:03