/ / Como funciona a capacidade SortedList - c #, sortedlist

Como funciona a capacidade SortedList - c #, sortedlist

Gostaria de saber como funciona a propriedade de capacidade SortedList. No construtor eu configuro capacidade igual a 2, mas posso adicionar mais elementos. Por quê?

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));

Respostas:

2 para resposta № 1

A descrição de initialCapacity parâmetro de SortedListO construtor s diz que esse parâmetro especifica a capacidade inicial da lista, não sua capacidade final:

initialCapacity Tipo: System.Int32 O número inicial de elementos que o SortedList objeto pode conter.

Esse parâmetro é usado para reduzir o número de realocações quando você sabe o número de elementos que deseja adicionar à lista. Este parâmetro não altera o fato de que SortedList é uma coleção dimensionada dinamicamente, capaz de expandir quando você adiciona elementos a ela.

Observações ao Capacity propriedade da lista fornecer mais esclarecimentos:

Capacity é o número de elementos que o SortedList objeto pode armazenar. Count é o número de elementos que estão realmente no SortedList.

Capacity é sempre maior ou igual a Count. E se Count excede Capacity Ao adicionar elementos, a capacidade é aumentada automaticamente realocando o array interno antes de copiar os elementos antigos e adicionar os novos elementos.


0 para resposta № 2

A capacidade é sempre maior ou igual a Count. Se a Contagem exceder a Capacidade ao adicionar elementos, a capacidade será aumentada automaticamente realocando a matriz interna antes de copiar os elementos antigos e adicionar os novos elementos.

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


0 para resposta № 3

A capacidade de qualquer lista (classificada ou não) começaem 0 por padrão ou qualquer capacidade definida no construtor. Quando você adiciona um novo item que ultrapassa essa capacidade, o armazenamento de dados subjacente é reinicializado com o dobro da capacidade anterior e as referências são copiadas.