Delen via


Gesorteerde verzamelingstypen

De System.Collections.SortedList klasse, de System.Collections.Generic.SortedList<TKey,TValue> algemene klasse en de System.Collections.Generic.SortedDictionary<TKey,TValue> algemene klasse zijn vergelijkbaar met de Hashtable klasse en de Dictionary<TKey,TValue> algemene klasse omdat ze de IDictionary interface implementeren, maar ze behouden hun elementen in sorteervolgorde op sleutel en ze hebben geen O(1) invoeg- en ophaalkenmerken van hash-tabellen. De drie klassen hebben verschillende functies gemeen:

De volgende tabel bevat enkele verschillen tussen de twee gesorteerde lijstklassen en de SortedDictionary<TKey,TValue> klasse.

SortedList niet-genrische klasse en SortedList<TKey,TValue> algemene klasse SortedDictionary<TKey,TValue> algemene klasse
De eigenschappen die sleutels en waarden retourneren, worden geïndexeerd, waardoor efficiënt geïndexeerd kan worden opgehaald. Geen geïndexeerde ophaalbewerking.
Ophalen is O(log n). Ophalen is O(log n).
Invoeging en verwijdering zijn over het algemeen O(n); invoeging is echter O(logboek n) voor gegevens die al in sorteervolgorde staan, zodat elk element wordt toegevoegd aan het einde van de lijst. (Hierbij wordt ervan uitgegaan dat een formaat niet vereist is.) Invoeging en verwijdering zijn O(logboek n).
Gebruikt minder geheugen dan een SortedDictionary<TKey,TValue>. Gebruikt meer geheugen dan de SortedList niet-genrische klasse en de SortedList<TKey,TValue> algemene klasse.

Voor gesorteerde lijsten of woordenlijsten die gelijktijdig toegankelijk moeten zijn vanuit meerdere threads, kunt u sorteerlogica toevoegen aan een klasse die is afgeleid van ConcurrentDictionary<TKey,TValue>. Bij het overwegen van onveranderbaarheid volgen de volgende onveranderbare typen vergelijkbare sorteersemantiek: ImmutableSortedSet<T> en ImmutableSortedDictionary<TKey,TValue>.

Notitie

Voor waarden die hun eigen sleutels bevatten (bijvoorbeeld werknemersrecords die een werknemer-id-nummer bevatten), kunt u een sleutelverzameling maken met enkele kenmerken van een lijst en enkele kenmerken van een woordenlijst door de algemene klasse te gebruiken KeyedCollection<TKey,TItem> .

Vanaf .NET Framework 4 biedt de SortedSet<T> klasse een zelfverdelingsstructuur waarmee gegevens in gesorteerde volgorde worden bijgehouden na invoegingen, verwijderingen en zoekopdrachten. Deze klasse en de HashSet<T> klasse implementeren de ISet<T> interface.

Zie ook