[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()));
你觉得哪种比较方便呢?(其实最后结果有点小区别,你知道吗?❤️ )