list分组

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;
        }
    }
}
posted @   EPIHPANY  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示