List<map<String,Object> 去重

本文介绍了一种使用传统Java循环进行集合去重的方法,并对比了利用Java 8的新特性简化这一过程的技术实现。通过实例展示了如何从重复的数据项中筛选出唯一记录。
List<Map<String,Object>> list = new ArrayList<>();
        Map<String,Object> map1= new HashMap<>();
        Map<String,Object> map2= new HashMap<>();
        Map<String,Object> map3= new HashMap<>();
        Map<String,Object> map4= new HashMap<>();
        map1.put("name","小明");
        map1.put("sex","男");
        map1.put("age","16");
        map2.put("name","小明");
        map2.put("sex","女");
        map2.put("age","16");
        map3.put("name","小明");
        map3.put("sex","男");
        map3.put("age","16");
        map4.put("name","小刚");
        map4.put("sex","男");
        map4.put("age","11");
        list.add(map1);
        list.add(map2);
        list.add(map3);
        list.add(map4);
        for(Map<String,Object> map:list){
            System.out.println(map);
        }
        System.out.println("------------------------去重后----------------------------");

        for(int i=0;i<list.size();i++){

            Map<String,Object> m1 = list.get(i);
                for(int j=i+1;j<list.size();j++){
                    Boolean flag = false;
                    Map<String,Object> m2 = list.get(j);
                    for(Map.Entry<String,Object> entry1: m1.entrySet()){
                         flag = false;
                        String mapKey1 = entry1.getKey();
                        String mapValue1 = (String) entry1.getValue();
                        String KeyValue1 = mapKey1 + mapValue1;
                    for(Map.Entry<String,Object> entry2: m2.entrySet()){
                        String mapKey2 = entry2.getKey();
                        String mapValue2 = (String) entry2.getValue();
                        String KeyValue2 = mapKey2 + mapValue2;
                        if(KeyValue1.equals(KeyValue2)){
                            flag = true;
                            break;
                        }
                    }
                    if(flag == false)
                        break;
                }
                    if(flag == true){
                        list.remove(j);
                    }

            }

        }
        for(Map<String,Object> map:list){
            System.out.println(map);
        }

运行结果:

{sex=男, name=小明, age=16}
{sex=女, name=小明, age=16}
{sex=男, name=小明, age=16}
{sex=男, name=小刚, age=11}
------------------------去重后----------------------------
{sex=男, name=小明, age=16}
{sex=女, name=小明, age=16}
{sex=男, name=小刚, age=11}

以上去重代码用java8新特性代替

list = list.stream().distinct().collect(Collectors.toList());

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值