Product prod1 = new Product(1L, 1, new BigDecimal("15.5"), "面包", "零食");
Product prod2 = new Product(2L, 2, new BigDecimal("20"), "饼干", "零食");
Product prod3 = new Product(3L, 3, new BigDecimal("30"), "月饼", "零食");
Product prod4 = new Product(4L, 3, new BigDecimal("10"), "青岛啤酒", "啤酒");
Product prod5 = new Product(5L, 10, new BigDecimal("15"), "百威啤酒", "啤酒");
List<Product> prodList = com.google.common.collect.Lists.newArrayList(prod1, prod2, prod3, prod4, prod5);
Map<String, Map<String, List<Product>>> prodMap= prodList.stream().collect(Collectors.groupingBy(Product::getCategory, Collectors.groupingBy(item -> {
if(item.getNum() < 3) {
return "3";
}else {
return "other";
}
})));
System.out.println(prodMap);
输出:
{啤酒={
other=[
Product(id=4, num=3, price=10, name=青岛啤酒, category=啤酒),
Product(id=5, num=10, price=15, name=百威啤酒, category=啤酒)
]
},
零食={
other=[
Product(id=3, num=3, price=30, name=月饼, category=零食)],
3=[
Product(id=1, num=1, price=15.5, name=面包, category=零食),
Product(id=2, num=2, price=20, name=饼干, category=零食)
]
}
}