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

如何通过Java Stream实现P类到OrderLi类的实体映射?

Java Stream 实现实体转换方案

核心转换代码

假设所有实体类已添加对应的Getter/Setter方法(实际开发中建议补充,或使用Lombok简化),转换逻辑如下:

import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

public class Converter {
    public List<OrderLi> convertPToOrderLiList(P p) {
        // 处理P中lin列表为null的情况,避免空指针
        return Optional.ofNullable(p.getLin())
                .orElseGet(Collections::emptyList)
                .stream()
                .map(lin -> {
                    OrderLi orderLi = new OrderLi();
                    // 映射Oh中的字段
                    Oh oh = lin.getOh();
                    if (oh != null) {
                        orderLi.setOhId(oh.getOhId());
                        orderLi.setSize(oh.getSize());
                    }
                    // 直接复用Lin中的pr和qty列表
                    orderLi.setPr(lin.getPr());
                    orderLi.setQty(lin.getQty());
                    return orderLi;
                })
                .collect(Collectors.toList());
    }
}

逻辑说明

  • 仅遍历一次P中的lin列表,无重复循环,完全通过Stream流水线完成转换
  • 用Optional处理lin列表为null的边界情况,避免空指针异常
  • 每个Lin对象直接映射为一个OrderLi:提取Oh中的ohId和size,同时直接复用Lin自身的pr、qty列表
  • 最终将Stream结果收集为List<OrderLi>返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:57:26