首页 > 其他分享 >List<Map<String, Object>> 去出重复

List<Map<String, Object>> 去出重复

时间:2023-02-07 08:56:40浏览次数:48  
标签:Map get 重复 newList List key put

List<Map<String, Object>> 去出重复

public static void main(String[] args) {
    String [] array= {"name","age"};
    List<Map<String, Object>> oldList = getTestData();
    getListMap(oldList,"name",array);
    getListMap(oldList,"name");
    System.out.println(getListMap(oldList,"name",array));

}

public static List<Map<String, Object>> getTestData() {
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("name", "A");
    map.put("age", "0");
    map.put("age1", "0");
    Map<String, Object> map1 = new HashMap<String, Object>();
    map1.put("name", "B");
    map1.put("age", "1");
    map.put("age1", "0");
    Map<String, Object> map2 = new HashMap<String, Object>();
    map2.put("name", "A");
    map2.put("age", "1");
    map.put("age1", "1");
    list.add(map);
    list.add(map1);
    list.add(map2);
    return list;
}

 

1.去出重复的key
/**
 *  List<Map<String, Object>>  去出重复的key
 * @param str Map<String, Object> 中对比的key
 * @return
 */
public static List<Map<String, Object>> getListMap(List<Map<String, Object>> oldList,String str) {

    List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
    for (int i = 0; i < oldList.size(); i++) {
        Map<String, Object> oldMap = oldList.get(i);
        if (newList.size() > 0) {
            boolean isContain = false;
            for (int j = 0; j < newList.size(); j++) {
                Map<String, Object> newMap = newList.get(j);
                if (newMap.get(str).equals(oldMap.get(str))) {
                    for (String key : oldMap.keySet()) {
                        newMap.put(key, oldMap.get(key));
                    }
                    isContain = true;
                    break;
                }
            }

            if (!isContain) {
                newList.add(oldMap);
            }

        } else {
            newList.add(oldMap);
        }
    }
    return newList;
}

 

2.去出重复的key,保留这定的key
/**
 *  List<Map<String, Object>>   去出重复的key,保留这定的key
 * @param str Map<String, Object> 中对比的key
 * @param array 需要保留的key
 * @return
 */
public static List<Map<String, Object>> getListMap(List<Map<String, Object>> oldList,String str,String [] array) {

    List<Map<String, Object>> newList = new ArrayList<Map<String, Object>>();
    for (int i = 0; i < oldList.size(); i++) {
        Map<String, Object> oldMap = oldList.get(i);
        Map<String, Object> oldMap1 = new HashMap<String, Object>();

        for (String  arr : array) {
            oldMap1.put(arr, oldMap.get(arr));
        }
        if (newList.size() > 0) {
            boolean isContain = false;
            for (int j = 0; j < newList.size(); j++) {
                Map<String, Object> newMap = newList.get(j);
                if (newMap.get(str).equals(oldMap.get(str))) {
                    isContain = true;
                    break;
                }
            }
            if (!isContain) {
                newList.add(oldMap1);
            }
        } else {
            newList.add(oldMap1);
        }
    }
    return newList;
}

 

标签:Map,get,重复,newList,List,key,put
From: https://www.cnblogs.com/RedOrange/p/17091611.html

相关文章

  • 【原创】在 VBScript 中使用动态数组(ArrayList)
    环境要求WindowsXP及以上。Windows10、Windows11在Windows功能中勾选.NETFramework3.5(包括.NET2.0和3.0)。优点相比VBScript内置的数组,大小......
  • list使用1
    #include<iostream>#include<list>usingnamespacestd;voidPrintListContents(constlist<int>&listInput);intmain(){list<int>a;//在链表前添加数据......
  • GROUP BY结合HAVING实现查询重复数据
    GROUPBY字段名,以该字段名已经分类,HAVING可以对分完类的数据使用聚合函数例如SELECT*FROMstudentWHEREstu_nameIN(SELECTstu_nameFROMstudentGROUPBY......
  • SpringBoot+MyBatis的动态SQL、使用动态SQL时List传值错误解决方案
    目录实现动态SQL的四种方式:1、XML配置2、脚本SQL3、在方法中构建SQL4、结构化SQL关于动态SQL的List传值错误问题1、错误代码2、解决错误实现动态SQL的四种方式:1、XML配置......
  • JOSN字符串转List<dto>方法
    1.引入的包importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;实际代码StringpaperContent=workHistory.getPaperContent(......
  • spring 重复注解和aop拦截的实现示例
    前言:1:jdk1.8开始支持重复注解@Repeatable实现2:aop拦截需要拦截当前注解和@Repeatable指向的包装注解才可以完全拦截到,因为:1.当在在方法上只有一个注解时,aop拦截......
  • 详解Spring AOP自定义可重复注解没有生效问题
    目录1.问题背景2.不啰嗦,上代码3.问题排查3.1是不是切点写得有问题,于是换成如下形式:3.2是不是使用的地方不是代理对象4.问题原因 1.问题背景工作中遇......
  • Redis常用命令之操作List类型
    场景Centos中Redis的下载编译与安装(超详细):霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等......
  • java EE开发之Servlet第四课:监听器(Listener)
     1.什么是Listener监听器就像老板的秘书,那个秘书就是活的监听器,时时监听着老板,当老板发生一些事情的时候,秘书就会有相应的措施。比如老板口渴了,秘书就会去端茶;比如老板要......
  • 循环删除list元素
    最近和某个朋友聊天,说他手下的一个开发,工作3年多了,一个需求的技术点,需要循环删除List中的元素,整了半天,说程序报错,不会弄。。他挺无语的,和我倾诉,我说工作3年多......