对象之间数据映射操作,将结果对象的数据映射到输入对象,复用equals和hashCode实现,仅供参考:
1.处理主流程:
import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class HandleData { @Resource private CouponService couponService; //优惠券数据状态打标处理 public List<DataInfo> signCouponInfo(List<DataInfo> dataInfos){ //转换数据集 List<CouponDataInfo> couponDataInfos = dataInfos.stream().map(a -> { CouponDataInfo couponDataInfo = CouponDataInfo.of(a.getCouponId(), a.getCouponKey()); return couponDataInfo; }).collect(Collectors.toList()); //优惠券打标接口-新增优惠券状态 List<CouponDataInfo> list = couponService.signService(couponDataInfos); //打标结果对象映射对象数据 Map<DataInfo, CouponDataInfo> couponMap = list.stream().collect(Collectors.toMap(o -> DataInfo.of(o.getCouponId(), o.getCouponKey()), o -> o, (v1, v2) -> v1)); //封装打标状态 dataInfos.forEach(c -> { CouponDataInfo data = couponMap.get(c); if (null != data) { c.setCouponStatus(data.getCouponStatus()); } }); return dataInfos; } }
2、涉及对象的实现-封装对象
import java.io.Serializable; import java.util.Objects; public class DataInfo implements Serializable { private Long id;//主键 private Long couponId;//券编号 private String couponKey;//券Key private Long orderId;//订单号 private Integer couponStatus;//券状态 0:待领取 1:已领取未使用 2:已使用 3:已过期 public static DataInfo of(Long couponId, String couponKey) { DataInfo dataInfo = new DataInfo(); dataInfo.setCouponId(couponId); dataInfo.setCouponKey(couponKey); return dataInfo; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; DataInfo that = (DataInfo) o; return Objects.equals(couponId, that.couponId) && Objects.equals(couponKey, that.couponKey); } @Override public int hashCode() { return Objects.hash(couponId, couponKey); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getCouponId() { return couponId; } public void setCouponId(Long couponId) { this.couponId = couponId; } public String getCouponKey() { return couponKey; } public void setCouponKey(String couponKey) { this.couponKey = couponKey; } public Long getOrderId() { return orderId; } public void setOrderId(Long orderId) { this.orderId = orderId; } public Integer getCouponStatus() { return couponStatus; } public void setCouponStatus(Integer couponStatus) { this.couponStatus = couponStatus; } }
3、涉及对象的实现-传递对象
import java.io.Serializable; public class CouponDataInfo implements Serializable { private Long id;//主键 private Long couponId;//券编号 private String couponKey;//券Key private Integer couponStatus;//券状态 0:待领取 1:已领取未使用 2:已使用 3:已过期 public static CouponDataInfo of(Long couponId, String couponKey) { CouponDataInfo couponDataInfo = new CouponDataInfo(); couponDataInfo.setCouponId(couponId); couponDataInfo.setCouponKey(couponKey); return couponDataInfo; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getCouponId() { return couponId; } public void setCouponId(Long couponId) { this.couponId = couponId; } public String getCouponKey() { return couponKey; } public void setCouponKey(String couponKey) { this.couponKey = couponKey; } public Integer getCouponStatus() { return couponStatus; } public void setCouponStatus(Integer couponStatus) { this.couponStatus = couponStatus; } }