Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组
作用:对一个list进行分组
数据准备:
public Product(Long id, Integer num, BigDecimal price, String name, String category) {
this.id = id;
this.price = price;
this.name = name;
this.category = category;
}
Product prod1 = new Product(1L, new BigDecimal("15.5"), "面包", "零食");
Product prod2 = new Product(2L, new BigDecimal("20"), "饼干", "零食");
Product prod3 = new Product(3L, new BigDecimal("30"), "月饼", "零食");
Product prod4 = new Product(4L, new BigDecimal("10"), "青岛啤酒", "啤酒");
Product prod5 = new Product(5L, new BigDecimal("15"), "百威啤酒", "啤酒");
List<Product> prodList = Lists.newArrayList(prod1, prod2, prod3, prod4, prod5);
使用Collectors.groupingBy处理,按category处理
Map<String, List<Product>> prodMap= prodList.stream().collect(Collectors.groupingBy(Product::getCategory));
输出:
{
"啤酒": [{
"category": "啤酒",
"id": 4,
"name": "青岛啤酒",
"price": 10
}, {
"category": "啤酒",
"id": 5,
"name": "百威啤酒",
"price": 15
}],
"零食": [{
"category": "零食",
"id": 1,
"name": "面包",
"price": 15.5
}, {
"category": "零食",
"id": 2,
"name": "饼干",
"price": 20
}, {
"category": "零食",
"id": 3,
"name": "月饼",
"price": 30
}]
}
博客借鉴:https://blog.csdn.net/u014231523/article/details/102535902
浙公网安备 33010602011771号