首页 > 解决方案 > 按字母顺序对列表中的类别进行排序

问题描述

我有一个列表,其中包含有类别的项目。

enum class ItemCategory {
    ACCOUNT,
    CARD,
    OTHER,
    INVESTMENTS,
    LOAN
}

我按类别按字母顺序对项目进行排序:

items = itemList.sortedBy { it.category.name }.groupBy { it.category }

现在输出:账户、卡、投资、贷款、其他、支付

预期:帐户、卡、投资、贷款、付款、其他

标签: algorithmsortingkotlin

解决方案


Output Nowof:按ACCOUNT, CARD, INVESTMENTS, LOAN, OTHER, PAYMENT字母顺序正确。

如果你REQUIRE的输出是:ACCOUNT, CARD, INVESTMENTS, LOAN, PAYMENT, OTHER

您可以将数值分配给 Enum 值,如下所示:

public enum ItemCategory 
{
    ACCOUNT = 0, 
    CARD = 1, 
    INVESTMENTS = 2, 
    LOAN = 3, 
    PAYMENT = 4,
    OTHER = 5
}

然后在执行Sorting/时,Ordering您可以执行以下操作:

var itemList = new List<ItemCategory>
{
    ItemCategory.CARD,
    ItemCategory.ACCOUNT,
    ItemCategory.OTHER,
    ItemCategory.INVESTMENTS,
    ItemCategory.LOAN,
    ItemCategory.PAYMENT
};
        
var sortedList = itemList.OrderBy(i => (int)i).ToList();

然后您可以遍历列表,它将按以下顺序排列:

ACCOUNT
CARD
INVESTMENTS
LOAN
PAYMENT
OTHER

推荐阅读