I have an ArrayList of Beverages
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)));
My Beverage POJO is
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() {
}
}
I would like to group my list by type, containerType and itemName and sum the quatity field using Java8 Stream collector and EntrySet.
The output should be in ArrayList as shown in the attached screenshot