You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用重写的compare方法对按类别分组的商品按价格排序

解决方案

你可以通过两种方式实现每个分类下的商品按售价排序:


方案1:分组阶段直接完成排序(推荐)

在调用Collectors.groupingBy时指定下游收集器,分组完成后直接对每个分类下的商品列表完成排序,无需额外遍历Map:

Map<Category, List<Item>> mapOfItems = items
        .stream()
        .collect(Collectors.groupingBy(
                Item::getCategory,
                Collectors.collectingAndThen(
                        Collectors.toList(),
                        list -> {
                            list.sort(new ProductionSorter());
                            return list;
                        }
                )
        ));

方案2:对已生成的Map做遍历排序

如果你不需要修改之前的分组逻辑,可以直接遍历Map的所有值列表,逐个调用排序方法:

// 直接处理已生成的分组Map
mapOfItems.values().forEach(itemList -> itemList.sort(new ProductionSorter()));

说明:以上两种方式默认都是升序排序,如果需要降序,只需把ProductionSorter的compare返回值取反,或者调用list.sort(new ProductionSorter().reversed())即可。

内容的提问来源于stack exchange,提问作者JurajC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:06:03