java8 List 转 map

本贴最后更新于 1002 天前,其中的信息可能已经时移世异

[Map 的 merge 方法]

为了取数据方便,经常会有遇到 List 转 Map 的需求,这是典型的空间换时间做法。
Java8 提供了 merge,方便快捷

public static void main(String[] args) {

        Map<Long,List<SpuProduct>> map = New.hashMap();
        List<SpuProduct> spuList = New.arrayList();
        spuList.add(SpuProduct.builder().brandId(1L).spu(1L).name("测试1").build());
        spuList.add(SpuProduct.builder().brandId(1L).spu(2L).name("测试2").build());
        spuList.add(SpuProduct.builder().brandId(2L).spu(3L).name("测试3").build());
        spuList.add(SpuProduct.builder().brandId(3L).spu(4L).name("测试4").build());

        spuList.stream().forEach(s-> map.merge(s.getBrandId(),Lists.newArrayList(s),(oldList,newList)->
        {
            newList.addAll(oldList);
            return newList;
        }));

        System.err.println("##-map-值=" + map.get(1L).size() ");
    }

使用 Collectors.groupingBy() 也可以哦!

map = spuList.stream().collect(Collectors.groupingBy(SpuProduct::getBrandId,Collectors.toList()));

你觉得哪种比较方便呢?(其实最后结果有点小区别,你知道吗?❤️ )

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2989 引用 • 8141 回帖 • 596 关注

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...