List对象,根据对象中某个属性进行分组

        //根据用户id查询购物车数据
        List cartItemList=cartItemMapper.selectCartItemByMemId(memberId);
        //根据商家id分组
        Map> collect = cartItemList.stream()
                                                .collect(Collectors.groupingBy(CartItem::getBusinessId));
        List busCartItemList = new ArrayList<>(16);//最终返回多个商家信息
        for(String key:collect.keySet()){
            //封装商家信息和折扣信息对象
            BusCartItem busCartItem=new BusCartItem(); 
            System.out.println(key+":" +collect.get(key).size());
            System.out.println(collect.get(key));
            List cartItemList1 = collect.get(key);
            //然后再按照折扣id分组
            Map> discount = cartItemList1.stream()
                                                 .collect(Collectors.groupingBy(CartItem::getDiscountId));
            //封装折扣信息和商品信息对象
            List disCartItemList=new ArrayList<>(); 
            for (Long dis :discount.keySet()){
                DisCartItem disCartItem=new DisCartItem();
                List cartItem = discount.get(dis);
                System.out.println("cartItems======"+cartItem);
                disCartItem.setDiscountId(dis);
                disCartItem.setCartItemList(cartItem);
                disCartItemList.add(disCartItem);
            }
            busCartItem.setBusinessId(key);
            busCartItem.setDisCartItemList(disCartItemList);
            System.out.println(discount);
            busCartItemList.add(busCartItem);
        }

核心代码:

Map> collect = cartItemList.stream()
                                                .collect(Collectors.groupingBy(CartItem::getBusinessId));

 

你可能感兴趣的:(java)