首页 > 解决方案 > Kotlin 在 Map 上自定义排序

问题描述

我有这个对象 Map<String, List> 的地图。它来自后端,我想在 Key 上对其进行排序。

关键将是以下任何一个:支票,储蓄,信用,贷款。

我想按此顺序对地图进行排序。

这是我的代码,它没有按预期工作。

 private val productType: Comparator<in String> = compareBy { name ->
        productSortedOrder.indexOf(AccountProductEnum.safeValueOf(name))
    }

 private val productSortedOrder = arrayOf(AccountProductEnum.CHECKING,
        AccountProductEnum.SAVINGS,
        AccountProductEnum.CREDIT,
        AccountProductEnum.LOAN)

这是我对地图进行排序的方式:

accountList.groupBy { account -> account.product.name }
                        .toSortedMap(productType)

使用这个逻辑,它按 CREDIT、CHECKING、LOAN、SAVINGS 的顺序打印,我想要按 CHECKING、SAVINGS、CREDIT、LOAN 的顺序打印。

我应该如何实现这一目标?

标签: sortingkotlinhashmapcustom-sort

解决方案


推荐阅读