📜  C#| SortedList的容量(1)

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

C# | SortedList的容量

在 C# 中,SortedList 是一种字典集合,它按键排序并存储键值对。它具有与 Hashtable 相同的速度和按键的排序特性。但是,它消耗更多的内存,因为它维护一个额外的数组来存储顺序。

当我们向 SortedList 中添加元素时,它会自动排序以保证其按键顺序排列。所以如果我们尝试添加一个键已经存在的元素,它将覆盖该键现有的值。

容量

SortedList 具有 Capacity 属性,该属性确定该列表可以容纳的元素数量。如果我们在添加元素时超过了容量,SortedList 自动调整其容量。

SortedList sortedList = new SortedList();
Console.WriteLine(sortedList.Capacity); // Output: 0
sortedList.Add(1, "Value1");
Console.WriteLine(sortedList.Capacity); // Output: 16
sortedList.Add(2, "Value2");
sortedList.Add(3, "Value3");
...

在这个例子中,我们创建了一个空的 SortedList 对象。然后我们尝试访问其 Capacity 属性。输出为 0,因为它没有任何元素,它的容量为 0。

接下来,我们向 SortedList 中添加一个键值对。 SortedList 自动调整其容量,容量现在为 16,因为它割让了一些内部存储空间。

当我们继续向 SortedList 中添加元素时,它可能自动增加其容量。如果这种情况发生了,它将再次割让另一些备用内存以供未来使用。

SortedList sortedList = new SortedList();
Console.WriteLine(sortedList.Capacity); // Output: 0
for (int i = 0; i < 20; i++) {
    sortedList.Add(i, "Value " + i);
    Console.WriteLine(sortedList.Capacity); // Output: 增加到 32,48,64等
}

在这个例子中,我们向 SortedList 中添加了 20 个新元素,每次添加一个键值对时都输出其 Capacity 值。注意,随着元素数量的增加,它的容量也会增加,因为它需要更多的内存来存储新元素。

总结

在 C# 中,SortedList 是一种排序字典集合。它具有 Capacity 属性,用于确定它可以容纳多少元素。当我们添加大量元素时,SortedList 可能会自动增加其容量。


## 参考资料

- [Microsoft docs: SortedList](https://docs.microsoft.com/en-us/dotnet/api/system.collections.sortedlist?view=net-5.0)
- [C# Corner: SortedList In C#](https://www.c-sharpcorner.com/article/sortedlist-in-C-Sharp/)