java8 Stream对List包含的map中的key进行去重

本文记录了使用Java8 Stream处理List<Map<String, String>>时如何对Map的key进行去重的问题。在尝试解决这个挑战后,作者分享了找到的解决方案,并希望能得到进一步的解释。" 125253036,10181515,Java基础:Stream流操作详解,"['Java', '开发语言', 'Stream API']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java8 Stream对List进行去重

由于最近才接触java8,语法还不是很熟,用了一段时间之后发现灰常好用,今天遇到一个难题,我有一个List<<Map<String, String>>,我需要对map里面的字段进行去重,这就难到我了,经过一番百度,找到了合适的解决方案,但是我不是很理解这段代码,特此记录,知道的请求解答。
我的数据结构如下:
在这里插入图片描述
我们可以看到里面又两条重复的记录,此时我们想根据map的key进行去重应该怎么做呢?


    public static void main(String[] args) {
        List<Map<String, String>> list = new ArrayList<>(16) ;
        Map<String,String> map1 = new HashMap<>(16);
        map1.put("key1", "val1");
        Map<String,String> map2 = new HashMap<>(16);
        map2.put("key1", "val1");
        list.add(map1);
        list.add(map2);
        //打印list里面的数据
        list.forEach(System.out::println);

        ArrayList<Map<String, String>> data = list.stream().collect(
                Collectors.collectingAndThen(Collectors.toCollection(
                        () -> new TreeSet<>(Comparator.comparing(m -> m.get("key1")))), ArrayList::new));
         System.out.println("=======去重前后分界线=======");
         //打印过滤后的数据
         data.forEach(System.out::println);
    }
    }
    


打印结果如下:

{key1=val1}
{key1=val1}
=======去重前后分界线=======
{key1=val1}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值