【发布时间】:2020-06-25 15:22:46
【问题描述】:
我有一个饮料数组列表
List<Beverage>beverages= Arrays.asList(
new Beverage("Alcoholic","Can","Budweiser",new BigDecimal(5)),
new Beverage("Alcoholic","Can","Budweiser",new BigDecimal(10)),
new Beverage("Alcoholic","Bottle","Budweiser",new BigDecimal(15)),
new Beverage("Alcoholic","Bottle","Budweiser",new BigDecimal(20)),
new Beverage("Alcoholic","Can","Tecate",new BigDecimal(5)),
new Beverage("Alcoholic","Bottle","Tecate",new BigDecimal(10)),
new Beverage("Alcoholic","Bottle","Tecate",new BigDecimal(16)),
new Beverage("Non-Alcoholic","Can","Coke",new BigDecimal(10)),
new Beverage("Non-Alcoholic","Can","Coke",new BigDecimal(10)),
new Beverage("Non-Alcoholic","Bottle","Coke",new BigDecimal(10)),
new Beverage("Non-Alcoholic","Can","Pepsi",new BigDecimal(10)),
new Beverage("Non-Alcoholic","Bottle","Pepsi",new BigDecimal(10)));
我的饮料 POJO 是
public class Beverage {
private String type;
private String containerType;
private String itemName;
private BigDecimal quantity;
public Beverage(String type, String containerType, String itemName, BigDecimal quantity) {
this.type = type;
this.containerType = containerType;
this.itemName = itemName;
this.quantity = quantity;
}
public Beverage() {
}
}
我想按类型、containerType 和 itemName 对列表进行分组,并使用 Java8 Stream 收集器和 EntrySet 对 quatity 字段求和。
【问题讨论】:
-
在这里你可以找到一些关于Group by multiple field names in java 8的好解决方案
-
我在这篇帖子stackoverflow.com/questions/41627658/… 中找到了 shmosel 的答案,但它只包含 2 个字段,有没有办法我可以做同样的事情,但使用 3 个字段而不是 2 个字段?
标签: java java-stream