c#

c# set集合 能自定义排序吗

小樊
81
2024-12-04 04:28:47
栏目: 编程语言

是的,在C#中,您可以使用SortedSet<T>类来自定义排序。SortedSet<T>是一个有序集合,它会根据元素的自然顺序或者您提供的比较器(IComparer<T>)进行排序。

以下是一个使用SortedSet<T>并自定义排序的示例:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 使用默认比较器(按自然顺序排序)创建 SortedSet
        SortedSet<int> defaultSortedSet = new SortedSet<int>();
        defaultSortedSet.Add(5);
        defaultSortedSet.Add(3);
        defaultSortedSet.Add(8);
        defaultSortedSet.Add(1);

        Console.WriteLine("默认排序:");
        foreach (int item in defaultSortedSet)
        {
            Console.WriteLine(item);
        }

        // 使用自定义比较器创建 SortedSet
        SortedSet<int> customSortedSet = new SortedSet<int>(new MyComparer());
        customSortedSet.Add(5);
        customSortedSet.Add(3);
        customSortedSet.Add(8);
        customSortedSet.Add(1);

        Console.WriteLine("\n自定义排序:");
        foreach (int item in customSortedSet)
        {
            Console.WriteLine(item);
        }
    }
}

// 自定义比较器实现 IComparer<int> 接口
class MyComparer : IComparer<int>
{
    public int Compare(int x, int y)
    {
        return y - x; // 降序排序
    }
}

在这个示例中,我们首先使用默认的比较器(按自然顺序排序)创建了一个SortedSet<int>。然后,我们创建了一个自定义比较器MyComparer,它实现了IComparer<int>接口,并在Compare方法中返回y - x,以实现降序排序。最后,我们使用自定义比较器创建了一个新的SortedSet<int>,并添加了相同的元素。输出结果将显示默认排序和自定义排序的结果。

0
看了该问题的人还看了