Udostępnij za pośrednictwem


Sortowane typów kolekcji

Klasa System.Collections.SortedList , System.Collections.Generic.SortedList<TKey,TValue> klasa ogólna i System.Collections.Generic.SortedDictionary<TKey,TValue> klasa ogólna są podobne do Hashtable klasy i Dictionary<TKey,TValue> klasy ogólnej, w której implementują IDictionary interfejs, ale utrzymują swoje elementy w kolejności sortowania według klucza i nie mają właściwości wstawiania i pobierania tabel skrótów. Trzy klasy mają kilka wspólnych cech:

W poniższej tabeli wymieniono niektóre różnice między dwiema posortowaną klasą listy i klasą SortedDictionary<TKey,TValue> .

SortedList klasa niegeneryczna i SortedList<TKey,TValue> klasa ogólna SortedDictionary<TKey,TValue> generic, klasa
Właściwości zwracające klucze i wartości są indeksowane, co umożliwia wydajne pobieranie indeksowanych. Brak indeksowanego pobierania.
Pobieranie to O(log n). Pobieranie to O(log n).
Wstawianie i usuwanie są zazwyczaj O(n); jednak wstawienie to O(log n) dla danych, które są już w kolejności sortowania, tak aby każdy element został dodany na końcu listy. (Przyjęto założenie, że zmiana rozmiaru nie jest wymagana). Wstawianie i usuwanie to O(log n).
Używa mniejszej SortedDictionary<TKey,TValue>ilości pamięci niż . Używa więcej pamięci niż SortedList klasa niegeneryczna i SortedList<TKey,TValue> klasa ogólna.

W przypadku posortowanych list lub słowników, które muszą być dostępne jednocześnie z wielu wątków, można dodać logikę sortowania do klasy pochodzącej z klasy ConcurrentDictionary<TKey,TValue>. Biorąc pod uwagę niezmienność, następujące odpowiadające immujnie typy są zgodne z podobną semantyczną sortowania: ImmutableSortedSet<T> i ImmutableSortedDictionary<TKey,TValue>.

Uwaga

W przypadku wartości zawierających własne klucze (na przykład rekordy pracowników zawierające numer identyfikatora pracownika) można utworzyć kolekcję kluczy, która ma pewne cechy listy i niektóre cechy słownika, wyprowadzając je z KeyedCollection<TKey,TItem> klasy ogólnej.

Począwszy od programu .NET Framework 4, klasa udostępnia drzewo samodzielnego równoważenia, SortedSet<T> które przechowuje dane w kolejności posortowanej po wstawieniu, usunięciu i wyszukiwaniu. Ta klasa i HashSet<T> klasa implementują ISet<T> interfejs.

Zobacz też