Rendezett gyűjteménytípusok
Az System.Collections.SortedList osztály, az System.Collections.Generic.SortedList<TKey,TValue> általános osztály és az System.Collections.Generic.SortedDictionary<TKey,TValue> általános osztály hasonló ahhoz az Hashtable osztályhoz és az Dictionary<TKey,TValue> általános osztályhoz, amelyben implementálják az IDictionary interfészt, de az elemeket kulcs szerint rendezési sorrendben tartják fenn, és nem rendelkeznek a kivonattáblák O(1) beszúrási és lekérési jellemzőivel. A három osztálynak számos közös funkciója van:
Mindhárom osztály implementálja a System.Collections.IDictionary felületet. A két általános osztály az általános felületet is implementálja System.Collections.Generic.IDictionary<TKey,TValue> .
Minden elem kulcs-érték pár enumerálási célokra.
Feljegyzés
A nemgenerikus SortedList osztály DictionaryEntry enumeráláskor visszaadja az objektumokat, bár a két általános típus objektumokat ad vissza KeyValuePair<TKey,TValue> .
Az elemeket implementáció (nemgenerikusSortedList) vagy System.Collections.Generic.IComparer<T> implementáció (a két általános osztály esetében) szerint System.Collections.IComparer rendezik.
Minden osztály olyan tulajdonságokat biztosít, amelyek csak a kulcsokat vagy csak az értékeket tartalmazó gyűjteményeket ad vissza.
Az alábbi táblázat felsorol néhány különbséget a két rendezett listaosztály és az SortedDictionary<TKey,TValue> osztály között.
SortedList nemgenerikus osztály és SortedList<TKey,TValue> általános osztály | SortedDictionary<TKey,TValue> általános osztály |
---|---|
A kulcsokat és értékeket visszaadó tulajdonságok indexelve vannak, így hatékony indexelt lekérést tesz lehetővé. | Nincs indexelt lekérés. |
A beolvasás O(log n ). |
A beolvasás O(log n ). |
A beszúrás és az eltávolítás általában O(n ); a beszúrás azonban O(log n ) az olyan adatok esetében, amelyek már rendezési sorrendben vannak, így minden elem hozzá lesz adva a lista végéhez. (Ez azt feltételezi, hogy nincs szükség átméretezésre.) |
A beszúrás és az eltávolítás az O(log n ) függvény. |
Kevesebb memóriát használ, mint egy SortedDictionary<TKey,TValue>. | Több memóriát használ, mint a SortedList nemgenerikus osztály és az SortedList<TKey,TValue> általános osztály. |
Több szálból egyidejűleg elérhető rendezett listák vagy szótárak esetén rendezési logikát adhat hozzá egy olyan osztályhoz, amelyből ConcurrentDictionary<TKey,TValue>származik. A megváltoztathatatlanság vizsgálatakor a következő, nem módosítható típusok hasonló rendezési szemantikát követnek: ImmutableSortedSet<T> és ImmutableSortedDictionary<TKey,TValue>.
Feljegyzés
A saját kulcsokat tartalmazó értékek (például az alkalmazottak azonosítószámát tartalmazó alkalmazottak rekordjai) esetében létrehozhat egy kulcsos gyűjteményt, amely a lista néhány jellemzőjét és a szótár néhány jellemzőjét tartalmazza az KeyedCollection<TKey,TItem> általános osztályból származtatva.
A .NET-keretrendszer 4-től kezdve az SortedSet<T> osztály egy önegyensúlyozó fát biztosít, amely rendezve tartja az adatokat a beszúrások, törlések és keresések után. Ez az osztály és az HashSet<T> osztály implementálja az interfészt ISet<T> .