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

 

posted on 2021-09-17 21:57  smile学子  阅读(459)  评论(0)    收藏  举报