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

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;
}
}
}

List<Map>中根据map的同一指标项数据——去重代码的更多相关文章

  1. 【Graphite】使用dropwizard.metrics向Graphite中写入指标项数据

    graphite 定时向Graphite中写入指标项数据,指标项模拟个数3000个 使用的类库 官方文档   dropwizard的github地址 Metric官方文档 metrics.dropwi ...

  2. Map接口----Map中嵌套Map

    package cn.good.com; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...

  3. 解决Android中ListView列表只显示一项数据的问题

    思路:获取每项item的高度,并相加,再加上分割线的高度,作为整个ListView的高度,方法如下: public static void setListViewHeightBasedOnChildr ...

  4. Java根据条件删除Map中元素

    今天在写程序过程中,需要根据判断条件删除一个Map中的相应数据,我自然而然想到可以通过调用Map中的remove(Object key)函数进行删除:代码如下: public Map<Doubl ...

  5. Map中根据条件删除元素

    今天在写程序过程中,需要根据判断条件删除一个Map中的相应数据,我自然而然想到可以通过调用Map中的remove(Object key)函数进行删除:代码如下: public Map<Doubl ...

  6. STL模板中的map的使用与例题

    最近的计分赛,记得自己的都只是过了两题.遇到了两次map,自己在寒假看了一点的map,只知道在字符串匹配的时候可以用的到.但是自己对map的使用还是不够熟练使用,这回在第一次和第二次的计分赛中都遇到可 ...

  7. 【转】hive优化之--控制hive任务中的map数和reduce数

    一.    控制hive任务中的map数:  1.    通常情况下,作业会通过input的目录产生一个或者多个map任务. 主要的决定因素有: input的文件总个数,input的文件大小,集群设置 ...

  8. Map java中的map 如何修改Map中的对应元素

    Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map ...

  9. Java中Set Map List 的区别

    java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...

随机推荐

  1. 记一次面经pm

    记一次面经 介绍下你自己的这个项目. 浅谈一下数据结构.    参考网站    在我的记忆中,数据结构包括链表.线性表.栈与队列.数组.一些排序,比如冒泡排序.快速排序.希尔排序.堆排序等,还有一些树 ...

  2. Leetcode刷题——007.整数反转

    上代码: #include <cmath> class Solution { public: int reverse(int x) { ; long long tx=llabs(x); ) ...

  3. Linux分页机制

    地址长度 在Linux下,unsigned long可以与地址的长度保持一致,即32位系统下unsigned long为32位,而64位系统下为64位长. 虚拟地址的分解 如图所示,通过XXX_SHI ...

  4. PAT_A1055#The World's Richest

    Source: PAT A1055 The World's Richest (25 分) Description: Forbes magazine publishes every year its l ...

  5. 拾遗:使用 systemd-journald 管理 Docker 容器日志

    在 docker.service 文件中的 ExecStart 字段中,添加(或:docker run --log-driver=journald): --log-driver=journald \ ...

  6. 前端(二)—— CSS的引入方式、长度与颜色单位、常用样式、选择器

    CSS的引入方式.长度与颜色单位.常用样式.选择器 一.CSS的三种引入方式 1.行间式 <!doctype html> <html> <head> <met ...

  7. SharpDx

    layout category title permalink posts_by_category SharpDX SharpDX 系列 /post/sharpdx

  8. windows server 常用功能(一)

    最近做了一个windows server 2016的环境,也遇到了很多问题,作为一个新手,又没有很好的记录下解决方案,因为写这篇文章的时间有点晚,因此只能留下一些思路以供参考. 1.作为一个serve ...

  9. CSS——标签显示模式(display)

    非洲黑人: 皮肤内黑色素含量高,以吸收阳光中的紫外线,保护皮肤内部结构免遭损害,头发象羊毛一样卷曲,使每根卷发周围都有许多空隙,空隙充满空气,卷发有隔热作用. 欧洲白人: 生活寒带或着是说常年温度较低 ...

  10. kafka和flume进行整合的日志采集的confi文件编写

    配置flume.conf 为我们的source channel sink起名 a1.sources = r1 a1.channels = c1 a1.sinks = k1 指定我们的source收集到 ...