欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java中实现根据一个List中的数据的两个属性相同划分为同一类

发布时间:2025/3/19 java 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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中的数据的两个属性相同划分为同一类的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。