zoukankan      html  css  js  c++  java
  • List<Map>中根据map的同一指标项数据——去重代码

         

    先看网络上,博客经常出现的错误代码:

    for(ABatchAddCheckVO aBatchAddCheckVO : addList){
                dto.put("aac001",aBatchAddCheckVO.getAac001());//设置人员编号 
                //由于sql语句使用union查询_sjql和ac4,如果2个表都有记录,就会存在重复,需要去重
                List<Map> list = aFQService.getBatchAc5_SJQL(dto);
                //list数据去重——冒泡去重
                for(int i = 0; i < list.size(); i++){
                    //得到list中每一个map
                    Map map= list.get(i);
                    for (int j = 1; j < list.size(); j++) {
                        Map map2= list.get(j);
                        if (map.get("qlbzlb").equals(map2.get("qlbzlb"))) {
                            list.remove(j);
                            continue;
                        }
                    }
                }
    
                if(ValidateUtil.isNotEmpty(list)){
                    succList.addAll(list);// 把查出来的标识数据,直接存到成功列表中
                }else{
                    errList.add(aBatchAddCheckVO);//没有查出来,就是错误数据
                }
            }

    一样的:

     if ("2".equals(dto.getAsString("czfs"))) {
                List<Key> list = JSONObject.parseArray(dto.getAsString("list"), Key.class);
                List<ADetailVO> aDetailVOList = new ArrayList<>();
    
                //需要对list根据aac001去重,一个aac001会有多条记录,后台方法支持,根据一个aac001查出多条问题记录,
                // 如果不根据aac001去重,就会出现一个人重复插入事件表和明细表问题
    
                //list数据去重——冒泡去重
                for(int i = 0; i < list.size(); i++){
                    //得到list中每一个map
                    Map map= list.get(i);
                    for (int j = 1; j < list.size(); j++) {
                        Map map2= list.get(j);
                        if (map.get("aac001").equals(map2.get("aac001"))) {
                            list.remove(j);
                            continue;
                        }
                    }
                }

    注意:

    上述代码有bug,不是冒泡排序,会出问题,使用时,会过滤掉(即:remove 掉一半的数据)

    更改如下:

                //需要对list根据aac001去重,一个aac001会有多条记录,后台方法支持,根据一个aac001查出多条问题记录,
                // 如果不根据aac001去重,就会出现一个人重复插入事件表和明细表问题
    
                //list数据去重——冒泡去重
                for(int i = 0; i < list.size() - 1; i++){
                    //得到list中每一个map
                    Map map= list.get(i);
                    for(int j = list.size() - 1; j > i; j--){
                        Map map2= list.get(j);
                        if (map.get("aac001").equals(map2.get("aac001"))) {
                            list.remove(j);
                            continue;
                        }
                    }
                }
  • 相关阅读:
    85--spring cloud (Ribbon-Eureka注册中心)
    85--spring cloud 入门(springcloud简介)
    84--spring cloud 入门(微服务注册中心介绍)
    83--spring cloud 入门(Eureka注册中心)
    82--JT项目20(订单模块实现/ThreadLocal本地线程变量/Quartz框架)
    81--JT项目19(商品购物车/详情/用户退出)
    80--JT项目18(Dubbo负载均衡/单点登录/注册业务)
    Ajax中post与get的区别
    Process
    Java实现CURL,与把字符串结果写到json文件
  • 原文地址:https://www.cnblogs.com/moonsoft/p/11712696.html
Copyright © 2011-2022 走看看