Java中实现根据一个List中的数据的两个属性相同划分为同一类
生活随笔
收集整理的这篇文章主要介绍了
Java中实现根据一个List中的数据的两个属性相同划分为同一类
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
场景
有一个List,每一个元素是一个对象,根据每个对象的两个属性
是否相同划分为同一类,即两个属性都相同时才划为同一类。
并将同类中的num属性进行累加。
如图:
根据material_number和supplier_batch两个字段相同则划分为同一类。
实现
每个对象有一个deletedFlag属性,标识是否可用,通过两层遍历循环判断两个
对象的两个属性是否相同。如果相同则将另一个设为不可用,并将其num属性累加给可以用
的那个对象。
最后剩下的设为可用的对象就是不同类别的对象的list。
List<WmsReceiveOrderDetails> wmsReceiveOrderDetailsList=wmsReceiveOrderDetailsMapper.selectList(wmsReceiveOrderDetailsQueryWrapper);//去重for(int i=0;i<wmsReceiveOrderDetailsList.size();i++){if(wmsReceiveOrderDetailsList.get(i).getDeletedFlag()==false){for(int j=i+1;j<wmsReceiveOrderDetailsList.size();j++) {if(wmsReceiveOrderDetailsList.get(j).getDeletedFlag()==false){if (wmsReceiveOrderDetailsList.get(i).getMaterielNumber().equals(wmsReceiveOrderDetailsList.get(j).getMaterielNumber()) && wmsReceiveOrderDetailsList.get(i).getSupplierBatch().equals(wmsReceiveOrderDetailsList.get(j).getSupplierBatch())) {wmsReceiveOrderDetailsList.get(j).setDeletedFlag(true);Long numSum =Long.parseLong(wmsReceiveOrderDetailsList.get(i).getNum().toString());Long num =Long.parseLong(wmsReceiveOrderDetailsList.get(j).getNum().toString());numSum+=num;wmsReceiveOrderDetailsList.get(i).setNum(numSum);} else {continue;}}else{continue;}}}else{continue;}}
总结
以上是生活随笔为你收集整理的Java中实现根据一个List中的数据的两个属性相同划分为同一类的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Java中实现按字符串位数在前面补0
- 下一篇: Java中实现使用split方法分隔字符