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

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. 关于C语言命令行参数问题

    1 int main(int argc,char** argv) 参数: argc:命令行参数的个数 argv:保存命令行参数:argv[0]保存本程序自己的名称 现在自己只知道这些以后再有学习继续补 ...

  2. Linux启动过程的C语言代码分析

    1. main函数 参见上方http://www.cnblogs.com/long123king/p/3543872.html,代码跳转到main函数. arch/x86/boot/main.c 1: ...

  3. k8s 资源管理

    对应到Kubernetes的Pod容器上,就是下面这4个参数:◎ spec.container[].resources.requests.cpu:◎ spec.container[].resource ...

  4. JUC源码分析-其它工具类(一)ThreadLocalRandom

    JUC源码分析-其它工具类(一)ThreadLocalRandom ThreadLocalRandom 是 JDK7 在 JUC 包下新增的随机数生成器,它解决了 Random 在多线程下多个线程竞争 ...

  5. 微信小程序のwxs

    WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构. wxs可以说就是为了满足能在页面中使用js存在的,在wxml页面中,只能在插值{{ }}中写简单的j ...

  6. C#跨线程访问(二)----thread参数、回调传参数

    一.单个参数(封箱也可实现多参数) class B  {      public static void Main()      {          Thread t = new Thread(ne ...

  7. apache + php 无法访问redis

    1.在有扩展的情况下 2.测试连接 <?php $redis=new Redis(); $redis->connect('127.0.0.1',6379); echo "succ ...

  8. 笔记44 Hibernate快速入门(一)

    一.Hibernate简介 Hibernate 是传统 Java 对象和数据库服务器之间的桥梁,用来处理基于 O/R 映射机制和模式的那些对象. Hibernate 架构是分层的,作为数据访问层,你不 ...

  9. 七牛云-C#SDK-上传-前期准备

    1.创建一个asp.net core MVC 程序(这里随便) 这是一个空的程序 2.创建UploadController 3.添加引用 Install-Package Newtonsoft.Json ...

  10. Android android studio常用的一些快捷键以及常用权限

    android studio的常用快捷键:一.打印log:1.输入logt回车:  自动生成TAG的全局变量:private static final String TAG = "MainA ...