Java stream将两个list合为一个list

阅读: 评论:0

Java stream将两个list合为一个list

Java stream将两个list合为一个list

 示例:两个bean,一个汇总bean

@Data
public class RepaymentPlanUserDTO implements Serializable {
/*** 当前期数**/
private Integer period;
/*** 应还日期 按账单生成规则进行生成,格式:yyyy-mm-dd hh:mm:ss(默认零点)**/
private LocalDateTime shouldRepayTime;
/*** 应还总额**/
private BigDecimal shouldRepayTotal;
}
@Data
public class CashPreRepayInfoDTO implements Serializable {/*** 提前结清应付金额*/private BigDecimal clearanceAmount;/*** 期数*/private Integer periodNum;}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RepaymentPlanTrialDTO implements Serializable {/*** 当前期数*/private Integer period;/*** 应还日*/private LocalDate shouldRepayDate;/*** 每期应还金额*/private BigDecimal shouldRepayAmount;/*** 提前结清金额*/private BigDecimal preClearAmount;
}

//构建两个list

List<RepaymentPlanUserDTO> udtos = new ArrayList<>();
RepaymentPlanUserDTO r1 = new RepaymentPlanUserDTO();
r1.setPeriod(1);
r1.setShouldRepayTotal(BigDecimal.ONE);
r1.w());
RepaymentPlanUserDTO r2 = new RepaymentPlanUserDTO();
r2.setPeriod(2);
r2.setShouldRepayTotal(BigDecimal.valueOf(2));
r2.w().plusDays(2));
RepaymentPlanUserDTO r3 = new RepaymentPlanUserDTO();
r3.setPeriod(3);
r3.setShouldRepayTotal(BigDecimal.valueOf(3));
r3.w().plusDays(3));
final List<CashPreRepayInfoDTO> pdtos = new ArrayList<>();
CashPreRepayInfoDTO c1 = new CashPreRepayInfoDTO();
c1.setPeriodNum(1);
c1.setClearanceAmount(BigDecimal.valueOf(11));
CashPreRepayInfoDTO c2 = new CashPreRepayInfoDTO();
c2.setPeriodNum(2);
c2.setClearanceAmount(BigDecimal.valueOf(12));
CashPreRepayInfoDTO c3 = new CashPreRepayInfoDTO();
c3.setPeriodNum(3);
c3.setClearanceAmount(BigDecimal.valueOf(13));
pdtos.addAll(Arrays.asList(c1,c2,c3));
udtos.addAll(Arrays.asList(r1,r2,r3));

//根据period合并两个bean

List<RepaymentPlanTrialDTO> list = udtos.stream().flatMap(x -> pdtos.stream().filter(y -> x.getPeriod().intValue() == y.getPeriodNum()).map(z -> new Period(), x.getShouldRepayTime().toLocalDate(), x.getShouldRepayTotal(), z.getClearanceAmount()))).List());

List<RepaymentPlanTrialDTO> list = udtos.stream().flatMap(x -> pdtos.stream().filter(y -> x.getPeriod().intValue() == y.getPeriodNum()).map(z -> new Period(), x.getShouldRepayTime().toLocalDate(), x.getShouldRepayTotal(), z.getClearanceAmount()))).List());

//输出

RepaymentPlanTrialDTO(period=1, shouldRepayDate=2019-07-02, shouldRepayAmount=1, preClearAmount=11)
RepaymentPlanTrialDTO(period=2, shouldRepayDate=2019-07-04, shouldRepayAmount=2, preClearAmount=12)
RepaymentPlanTrialDTO(period=3, shouldRepayDate=2019-07-05, shouldRepayAmount=3, preClearAmount=13)

 

 

 

本文发布于:2024-02-02 21:01:10,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170687887046416.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:两个   Java   stream   list
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23