[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()));
你觉得哪种比较方便呢?(其实最后结果有点小区别,你知道吗?❤️ )
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于