如何按降序对通用排序列表?

本文关键字:排序 列表 何按 降序 | 更新日期: 2023-09-18 11:28:00

你已在 C# 教程部分中了解了SortedList<TKey, TValue>。默认情况下,SortedList按键的升序存储键值对。在这里,您将学习如何创建按降序存储元素的 SortedList

SortedList 使用 IComparer<T> 实例来比较键并对集合进行排序。因此,为了按降序对集合进行排序,我们需要创建一个自定义类来按降序比较值。

class DecendingComparer<TKey>: IComparer<int>
{
    public int Compare(int x, int y)
    {
        return y.CompareTo(x);
    }
}
class Program
{
    static void Main(string[] args)
    {
        SortedList<int, int> descSortedList = new SortedList<int, int>(new DecendingComparer<int>());
        descSortedList.Add(1, 1);
        descSortedList.Add(4, 4);
        descSortedList.Add(3, 3);
        descSortedList.Add(2, 2);
        for (int i = 0; i < descSortedList.Count; i++)
        {
            Console.WriteLine("key: {0}, value: {1}", descSortedList.Keys[i], descSortedList.Values[i]);
        }
}

使用 Comparer 按降序对 SortedList 进行排序,而不是创建单独的类。

class Program
{
    static void Main(string[] args)
    {
        var descendingComparer = Comparer<int>.Create((x, y) => y.CompareTo(x));
        
        SortedList<int, int> descSortedList = new SortedList<int, int>(descendingComparer);
        descSortedList.Add(1, 1);
        descSortedList.Add(4, 4);
        descSortedList.Add(3, 3);
        descSortedList.Add(2, 2);
        for (int i = 0; i < descSortedList.Count; i++)
        {
            Console.WriteLine("key: {0}, value: {1}", descSortedList.Keys[i], descSortedList.Values[i]);
        }
}

因此,您可以创建 SortedList 的实例,以按降序对集合进行排序。