如何通过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
相关产品推荐
相关产品推荐

