Java处理多个List集合中对象数据合并处理数据后为同⼀个List
集合对象
描述
现有三个接⼝,分别返回相同的列数据,字段名相同但是数据归属业务不同。但最终要的结果是⼏个集合的所有数据!
(三个接⼝来源数据并⽆关联关系,都是互相独⽴)
最终效果:
实际三个接⼝查询出来,使⽤list.addAll()进⾏拼接:
⽆法满⾜业务要求,如下才是满⾜业务要求:
bigdecimal转换为integer对。上代码!
三个list数据接⼝
//产品
List<ProductSalesVO> Data().getProductRanking();
//项⽬
List<ProductSalesVO> Data().getProjectRanking();
//套餐
List<ProductSalesVO> Data().getPackageRanking();
产品三条
ProductSalesVO{name='分店不享有分店不享有分店不享有分店不', sales=3, totalSalesAmount=36} ProductSalesVO{name='微肌修护舒缓⽔', sales=1, totalSalesAmount=100}
ProductSalesVO{name='测试001', sales=1, totalSalesAmount=80}
项⽬⼀条
ProductSalesVO{name='不享有折扣不享有折扣不享有折扣1·1', sales=1, totalSalesAmount=235}
套餐⼀条
ProductSalesVO{name='不享有折扣的套餐', sales=1, totalSalesAmount=300}
这是最终返回出去的容器↓
//初始化数据容器
List<ProductSalesRankingExportVO> expList = new ArrayList<>();
public class ProductSalesRankingExportVO implements Serializable {
private String cpName;
private Integer cpSales;
private BigDecimal cpTotalSalesAmount;
private String xmName;
private Integer xmSales;
private BigDecimal xmTotalSalesAmount;
private String tcName;
private Integer tcSales;
private BigDecimal tcTotalSalesAmount;
}
因为三个list数据长度不⼀样,需要出最长最⼤size的list.size,⽤来进⾏循环!
//判断三个list集合size 取最⼤。
int biggest = Math.max(productRanking.size(), projectRanking.size());
biggest = Math.max(biggest, packageRanking.size());
//按照最⼤的 list size进⾏遍历取数
for (int i = 0; i < biggest; i++) {
ProductSalesRankingExportVO vo = new ProductSalesRankingExportVO();
//产品list数据
if(productRanking.size() > i){
vo.(i).getName());
vo.(i).getSales());
vo.(i).getTotalSalesAmount());
}
//项⽬数据
if(projectRanking.size() > i) {
vo.(i).getName());
vo.(i).getSales());
vo.(i).getTotalSalesAmount());
}
//套餐数据
if(packageRanking.size() > i) {
vo.(i).getName());
vo.(i).getSales());
vo.(i).getTotalSalesAmount());
}
expList.add(vo);
}
最终的expList数据格式:
ProductSalesRankingExportVO{cpName='分店不享有分店不享有分店不享有分店不', cpSales=3, cpTotalSalesAmount=36, xmName='不享有折扣不享有折扣不享有折扣1·1', xmSales=1, xmTotalSalesAmount=235, tcName='不享有折扣的套餐', tcSales=1, tcTotalSalesAmount=300}
ProductSalesRankingExportVO{cpName='微肌修护舒缓⽔', cpSales=1, cpTotalSalesAmount=100, xmName='null', xmSales=0, xmTotalSalesAmount=null, tcName='null', tcSales=0, tcTotalSalesAmount=null}
ProductSalesRankingExportVO{cpName='测试001', cpSales=1, cpTotalSalesAmount=80, xmName='null', xmSales=0, xmTotalSalesAmount=null, tcName='null', tcSales=0, tcTotalSalesAmount=null}
//初始化数据容器
List<ProductSalesRankingExportVO> expList = new ArrayList<>();
//查询排⾏榜数据
JsonResult<ProductSalesRankingVO> objectJsonResult = ProductSalesRanking(token, range, shopId, startMonth, endMonth);        //产品
List<ProductSalesVO> productRanking = Data().getProductRanking();
//项⽬
List<ProductSalesVO> projectRanking =Data().getProjectRanking();
//套餐
List<ProductSalesVO> packageRanking =Data().getPackageRanking();
//判断三个list集合size 取最⼤。
int biggest = Math.max(productRanking.size(), projectRanking.size());
biggest = Math.max(biggest, packageRanking.size());
//按照最⼤的 list size进⾏遍历取数
for (int i = 0; i < biggest; i++) {
ProductSalesRankingExportVO vo = new ProductSalesRankingExportVO();
//产品list数据
if(productRanking.size() > i){
vo.(i).getName());
vo.(i).getSales());
vo.(i).getTotalSalesAmount());
}
/
/项⽬数据
if(projectRanking.size() > i) {
vo.(i).getName());
vo.(i).getSales());
vo.(i).getTotalSalesAmount());
}
//套餐数据
if(packageRanking.size() > i) {
vo.(i).getName());
vo.(i).getSales());
vo.(i).getTotalSalesAmount());
}
expList.add(vo);
}
//执⾏导出
ExcelUtils.unifiedExport(HEADERS,expList,"销售排⾏","产品销售排⾏榜");
总结
⽂章写到这,也就结束了,刚开始记录写⽂难免有不⾜,欢迎⼤家批评指正!

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