知行

总结之后必有收获 开始使用

java8 List 转 map

[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()));

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

评论
留下你的脚步