java 对象去重复并合并

传进来的list对象中有相同的wareInfoId和tagId,但是它们的number不同,需要把它们合并为一个对象,并把number相加,如下代码

//去重并合并数量
private List<WareCommentTag> distinctList(List<WareCommentTag> list)  {
       Map<String,WareCommentTag> tempMap = new HashMap<String,WareCommentTag>();
       int wareInfoId=0;
       int tagId=0;
       int id=0;
       String wareTagId=null;
       for (int i = 0; i <list.size() ; i++) {
           wareInfoId=list.get(i).getWareInfoId();
           tagId=list.get(i).getTagId();
           id=list.get(i).getId()==null?0:list.get(i).getId();
           //把wareInfoId和tagId作为key,对象作为value
           wareTagId=String.valueOf(wareInfoId)+"-"+String.valueOf(tagId);
           if(tempMap.containsKey(wareTagId)){
               WareCommentTag tag=new WareCommentTag();
               if(id>0){
                   tag.setId(id);
               }
               tag.setTagId(tagId);
               tag.setWareInfoId(wareInfoId);
               tag.setNumber(tempMap.get(wareTagId).getNumber()+1);
               tempMap.put(wareTagId,tag);
           }else {
               tempMap.put(wareTagId,list.get(i));
           }
       }
       List<WareCommentTag> newList=new ArrayList<WareCommentTag>();
       for( Map.Entry<String,WareCommentTag> entry:  tempMap.entrySet()){
           newList.add(entry.getValue());
       }
       return newList;
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值