关于List集合数据去重的问题

关于List<Map<String,Object>>结构数据去重的问题

问题描述

当数据结构为List<Map<String,Object>>时,我们如何进行集合中的去重操作呢????

第一:分析

此结构中,List中重复元素为Map,每个Map集合中的某一个Key的Value值重复,那么我们只需要将List遍历一遍,将每个Map中的那个重复Value的值拿出,然后进行存储,去重操作即可

第二:代码实现
public static void main(String[] args) {
        //1.模拟数据
        List<Map<String,Object>> list = new ArrayList<>();
        for (int i = 0; i < 9; i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("no",i+"");
            map.put("name","张三"+i);
            list.add(map);
        }
        for (int i = 0; i < 9; i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("no",i+"");
            map.put("name","李四");
            list.add(map);
        }
        //2.查看模拟数据
        System.out.println(list);

        //3.创建一个Map,用来去重
        Map<String,Integer> map = new HashMap<>();

        //4.保存去重结果
        List<Map<String,Object>> resultList = new ArrayList<>();

        //5.循环去重操作
        for (Map<String,Object> suMap:list) {
            String no = (String) suMap.get("no");
            //6.该方法用来判断是否包含某一个KEY,用来去重
            if(!map.containsKey(no)){
                map.put(no,1);
                resultList.add(suMap);
            }

        }
        System.out.println(resultList);
    }
第三:输出结果对比
[{no=0, name=张三0}, {no=1, name=张三1}, {no=2, name=张三2}, {no=3, name=张三3}, {no=4, name=张三4}, {no=5, name=张三5}, {no=6, name=张三6}, {no=7, name=张三7}, {no=8, name=张三8}, {no=0, name=李四}, {no=1, name=李四}, {no=2, name=李四}, {no=3, name=李四}, {no=4, name=李四}, {no=5, name=李四}, {no=6, name=李四}, {no=7, name=李四}, {no=8, name=李四}]
[{no=0, name=张三0}, {no=1, name=张三1}, {no=2, name=张三2}, {no=3, name=张三3}, {no=4, name=张三4}, {no=5, name=张三5}, {no=6, name=张三6}, {no=7, name=张三7}, {no=8, name=张三8}]
第四:总结

此种方法,循环一次便可进行去重操作,当然,其他的方式也有,不过目前是我在工作中用的一种方式,只为了记录下来,分享出去,以便有其他小伙伴遇到类似问题,提供一个思路而已。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值