📜  C#中的SortedSet与示例(1)

📅  最后修改于: 2023-12-03 14:40:32.253000             🧑  作者: Mango

C#中的SortedSet

在C#中,SortedSet是一个集合类,它是有序的且不允许重复的元素。它实现了ISet接口,并提供了一些额外的方法来处理有序集合。

创建SortedSet

可以使用以下任一方法来创建一个新的SortedSet:

// 创建空的SortedSet
SortedSet<T> set1 = new SortedSet<T>();

// 创建包含一组元素的SortedSet
SortedSet<T> set2 = new SortedSet<T> { item1, item2, item3 };

// 使用自定义比较器创建SortedSet
SortedSet<T> set3 = new SortedSet<T>(comparer);
添加和移除元素

与其他集合类一样,SortedSet提供了一些方法来添加和移除元素。

  • Add(item):将元素添加到SortedSet中,如果元素已存在,则不会进行任何操作。
  • Remove(item):从SortedSet中移除指定的元素。
  • RemoveWhere(predicate):根据指定的条件移除符合条件的元素。
  • Clear():清空SortedSet中的所有元素。
排序和查找

由于SortedSet是有序的,我们可以进行一些排序和查找操作。

  • Count:获取SortedSet中元素的数量。
  • Min:获取SortedSet中的最小值。
  • Max:获取SortedSet中的最大值。
  • Contains(item):检查SortedSet中是否包含指定的元素。
  • GetEnumerator():返回一个用于遍历SortedSet的枚举器。
  • GetViewBetween(lowerValue, upperValue):返回一个只包含指定范围内元素的SortedSet视图。
示例

以下示例演示了如何使用SortedSet来对一组整数进行排序和查找:

SortedSet<int> numbers = new SortedSet<int> { 5, 1, 3, 2, 4 };

// 添加元素
numbers.Add(6);
numbers.Add(2);

// 移除元素
numbers.Remove(3);

// 输出SortedSet中的元素
foreach (int num in numbers)
{
    Console.WriteLine(num);
}

// 输出SortedSet中的最小值和最大值
Console.WriteLine("Min: " + numbers.Min);
Console.WriteLine("Max: " + numbers.Max);

// 检查元素是否存在
Console.WriteLine("Contains 2: " + numbers.Contains(2));
Console.WriteLine("Contains 7: " + numbers.Contains(7));

输出结果:

1
2
4
5
6

Min: 1
Max: 6
Contains 2: True
Contains 7: False

以上示例展示了SortedSet的基本用法,你可以根据自己的需求进一步探索它的功能和方法。

注意:在使用SortedSet时,元素类型必须是可排序的(即实现了IComparable接口或提供了自定义比较器)。如果元素类型不是可排序的,则会在运行时抛出异常。