import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Test {
@org.junit.Test
public void test1(){
List<Order> orderList = new ArrayList<>();
Order order1 = new Order("1","1","1",new BigDecimal("8.78"),"2 apples");
Order order2 = new Order("2","1","2",new BigDecimal("2.78"),"2 potatos");
Order order3 = new Order("3","2","1",new BigDecimal("12.78"),"4 apples");
orderList.add(order1);
orderList.add(order2);
orderList.add(order3);
Map<String, List<Order>> orderMap = orderList.stream().collect(Collectors.groupingBy(Order::getProductId));
for(Map.Entry<String,List<Order>> entry : orderMap.entrySet()){
String key = entry.getKey();
List<Order> orders = entry.getValue();
System.out.println("分组名称:"+key+"\n组中productId=" + orders.stream().map(Order::getProductId).collect(Collectors.joining(",")));
}
}
private class Order{
private String orderId;
private String userId;
private String productId;
private BigDecimal amt;
private String desc;
public Order(String orderId, String userId, String productId, BigDecimal amt, String desc) {
this.orderId = orderId;
this.userId = userId;
this.productId = productId;
this.amt = amt;
this.desc = desc;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public BigDecimal getAmt() {
return amt;
}
public void setAmt(BigDecimal amt) {
this.amt = amt;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
}