SortedList容量如何工作

时间:2018-02-06 18:21:42

标签: c# sortedlist

我想知道SortedList容量属性是如何工作的。 在构造函数中我设置容量等于2,但我可以添加更多元素。 为什么呢?

SortedList<int, string> sortedList = new SortedList<int, string>{ Capacity = 2 };
sortedList.Add(0, "zero");
sortedList.Add(1, "one");
sortedList.Add(2, "two");
sortedList.Add(3, "three");

sortedList.Values.ToList().ForEach(v => Console.WriteLine(v));

3 个答案:

答案 0 :(得分:2)

initialCapacity构造函数的SortedList参数说明此参数指定列表的初始容量,而不是其最终容量:

  

initialCapacity   输入:System.Int32   SortedList对象可以包含的初始元素数。

当您知道要添加到列表中的元素数时,此参数用于减少重新分配的数量。此参数不会更改SortedList是动态大小的集合的事实,当您向其添加元素时,该集合能够扩展。

对列表的Capacity属性的备注提供了进一步的说明:

  

CapacitySortedList对象可以存储的元素数。 Count是实际位于SortedList

中的元素数量      

Capacity始终大于或等于Count。如果Count在添加元素时超过Capacity,则在复制旧元素和添加新元素之前,通过重新分配内部数组会自动增加容量。

答案 1 :(得分:0)

容量始终大于或等于Count。如果Count在添加元素时超出容量,则在复制旧元素和添加新元素之前,通过重新分配内部数组来自动增加容量。

https://msdn.microsoft.com/en-us/library/system.collections.sortedlist.capacity(v=vs.110).aspx

答案 2 :(得分:0)

任何List(已排序或未排序)的容量默认情况下从0开始,或者在构造函数中设置的任何容量。当您添加超过该容量的新项目时,基础数据存储将以之前容量的两倍重新初始化,并且复制引用。