TreeMap 上的 Kotlin sortBy

joh*_*crq 2 group-by treemap kotlin

实现这一点的 kotlin 方式是什么:

public static TreeMap<Integer, ArrayList<HomeItem>> getHomeItemListsSeparatedByPageId(List<HomeItem> homeItemsList) {

        if (homeItemsList.size() == 0) {
            return new TreeMap<>();
        }

        TreeMap<Integer, ArrayList<HomeItem>> map = new TreeMap<>();

        for (HomeItem hl : homeItemsList) {
            if (map.get(hl.getVisiblePageId()) == null) {
                map.put(hl.getVisiblePageId(), new ArrayList<>());
            }
            map.get(hl.getVisiblePageId()).add(hl);
        }

        return map;
    }
Run Code Online (Sandbox Code Playgroud)

我试图在我的 args 列表上应用 groupBy,但它返回一个 HashMap。

编辑:基本上,原始列表被查询,它被分组visiblePageId,并添加到一个树图中,其键是 id,值是具有该 id 的项目

yol*_*ole 5

您可以使用groupByTo 方法并将TreeMap实例作为第一个参数传递。

fun getHomeItemListsSeparatedByPageId(homeItems: List<HomeItem>) =
    homeItems.groupByTo(TreeMap()) { it.visiblePageId }
Run Code Online (Sandbox Code Playgroud)