SortedList Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje kolekci párů klíč-hodnota uspořádaných podle klíčů, ke kterým je možné přistupovat podle klíče a indexu.
public ref class SortedList : System::Collections::IDictionary
public ref class SortedList : ICloneable, System::Collections::IDictionary
public class SortedList : System.Collections.IDictionary
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class SortedList : ICloneable, System.Collections.IDictionary
type SortedList = class
interface ICollection
interface IEnumerable
interface IDictionary
type SortedList = class
interface ICollection
interface IEnumerable
interface IDictionary
interface ICloneable
[<System.Serializable>]
type SortedList = class
interface IDictionary
interface ICollection
interface IEnumerable
interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortedList = class
interface IDictionary
interface ICollection
interface IEnumerable
interface ICloneable
Public Class SortedList
Implements IDictionary
Public Class SortedList
Implements ICloneable, IDictionary
- Dědičnost
-
SortedList
- Atributy
- Implementuje
Příklady
Následující příklad kódu ukazuje, jak vytvořit a inicializovat SortedList objekt a jak vytisknout jeho klíče a hodnoty.
#using <system.dll>
using namespace System;
using namespace System::Collections;
public ref class SamplesSortedList
{
public:
static void PrintKeysAndValues( SortedList^ myList )
{
Console::WriteLine( "\t-KEY-\t-VALUE-" );
for ( int i = 0; i < myList->Count; i++ )
{
Console::WriteLine( "\t{0}:\t{1}", myList->GetKey( i ), myList->GetByIndex( i ) );
}
Console::WriteLine();
}
};
int main()
{
// Creates and initializes a new SortedList.
SortedList^ mySL = gcnew SortedList;
mySL->Add( "Third", "!" );
mySL->Add( "Second", "World" );
mySL->Add( "First", "Hello" );
// Displays the properties and values of the SortedList.
Console::WriteLine( "mySL" );
Console::WriteLine( " Count: {0}", mySL->Count );
Console::WriteLine( " Capacity: {0}", mySL->Capacity );
Console::WriteLine( " Keys and Values:" );
SamplesSortedList::PrintKeysAndValues( mySL );
}
/*
This code produces the following output.
mySL
Count: 3
Capacity: 16
Keys and Values:
-KEY- -VALUE-
First: Hello
Second: World
Third: !
*/
using System;
using System.Collections;
public class SamplesSortedList2
{
public static void Main()
{
// Creates and initializes a new SortedList.
SortedList mySL = new SortedList();
mySL.Add("Third", "!");
mySL.Add("Second", "World");
mySL.Add("First", "Hello");
// Displays the properties and values of the SortedList.
Console.WriteLine("mySL");
Console.WriteLine(" Count: {0}", mySL.Count);
Console.WriteLine(" Capacity: {0}", mySL.Capacity);
Console.WriteLine(" Keys and Values:");
PrintKeysAndValues(mySL);
}
public static void PrintKeysAndValues(SortedList myList)
{
Console.WriteLine("\t-KEY-\t-VALUE-");
for (int i = 0; i < myList.Count; i++)
{
Console.WriteLine("\t{0}:\t{1}", myList.GetKey(i), myList.GetByIndex(i));
}
Console.WriteLine();
}
}
/*
This code produces the following output.
mySL
Count: 3
Capacity: 16
Keys and Values:
-KEY- -VALUE-
First: Hello
Second: World
Third: !
*/
Imports System.Collections
Public Class SamplesSortedList
Public Shared Sub Main()
' Creates and initializes a new SortedList.
Dim mySL As New SortedList()
mySL.Add("Third", "!")
mySL.Add("Second", "World")
mySL.Add("First", "Hello")
' Displays the properties and values of the SortedList.
Console.WriteLine("mySL")
Console.WriteLine(" Count: {0}", mySL.Count)
Console.WriteLine(" Capacity: {0}", mySL.Capacity)
Console.WriteLine(" Keys and Values:")
PrintKeysAndValues(mySL)
End Sub
Public Shared Sub PrintKeysAndValues(myList As SortedList)
Console.WriteLine(ControlChars.Tab & "-KEY-" & ControlChars.Tab & _
"-VALUE-")
Dim i As Integer
For i = 0 To myList.Count - 1
Console.WriteLine(ControlChars.Tab & "{0}:" & ControlChars.Tab & _
"{1}", myList.GetKey(i), myList.GetByIndex(i))
Next i
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' mySL
' Count: 3
' Capacity: 16
' Keys and Values:
' -KEY- -VALUE-
' First: Hello
' Second: World
' Third: !
Poznámky
K SortedList elementu lze přistupovat pomocí klíče, jako je prvek v jakékoli implementaci IDictionary , nebo jeho index, jako prvek v jakékoli implementaci IList .
Důležité
Nedoporučujeme používat SortedList
třídu pro nový vývoj. Místo toho doporučujeme použít obecnou System.Collections.Generic.SortedList<TKey,TValue> třídu. Další informace najdete v tématu Na GitHubu by se neměly používat jiné než obecné kolekce .
Objekt SortedList interně udržuje dvě pole pro ukládání prvků seznamu; to znamená, že jedno pole pro klíče a druhé pole pro přidružené hodnoty. Každý prvek je pár klíč/hodnota, ke kterému lze přistupovat jako k objektu DictionaryEntry . Klíč nemůže být null
, ale hodnota může být.
Kapacita objektu SortedList je počet prvků, které SortedList může obsahovat. Při přidání prvků do SortedList, kapacita se automaticky zvýší podle potřeby prostřednictvím reallokace. Kapacitu lze snížit voláním TrimToSize nebo explicitním Capacity nastavením vlastnosti.
Pouze rozhraní .NET Framework: U velmi velkých SortedList objektů můžete zvýšit maximální kapacitu na 2 miliardy prvků v 64bitovém systému nastavením enabled
atributu konfiguračního <gcAllowVeryLargeObjects>
prvku na true
v prostředí běhu.
Prvky objektu SortedList jsou seřazeny podle klíčů buď podle konkrétní IComparer implementace zadané při vytvoření objektu SortedList , nebo podle IComparable implementace poskytované samotnými klíči. V obou případech nepovoluje duplicitní SortedList klíče.
Pořadí indexů je založené na pořadí řazení. Když je prvek přidán, vloží se do SortedList správného pořadí řazení a indexování se odpovídajícím způsobem upraví. Při odebrání elementu se indexování také odpovídajícím způsobem upraví. Index konkrétního páru klíč/hodnota se proto může měnit při přidání nebo odebrání prvků z objektu SortedList .
Operace s objektem SortedList mají tendenci být pomalejší než operace s objektem Hashtable kvůli řazení. Nabízí však větší flexibilitu SortedList tím, že umožňuje přístup k hodnotám prostřednictvím přidružených klíčů nebo indexů.
K prvkům v této kolekci lze přistupovat pomocí celočíselného indexu. Indexy v této kolekci jsou založené na nule.
Příkaz foreach
jazyka C# (for each
v jazyce Visual Basic) vrátí objekt typu elementů v kolekci. Vzhledem k tomu, že každý prvek objektu SortedList je pár klíč/hodnota, typ prvku není typem klíče ani typem hodnoty. Typ elementu je DictionaryEntryspíše . Příklad:
for each (DictionaryEntry de in mySortedList)
{
//...
}
foreach (DictionaryEntry de in mySortedList)
{
//...
}
For Each de As DictionaryEntry In mySortedList
'...
Next de
Příkaz foreach
je obálka kolem enumerátoru, který umožňuje pouze čtení z kolekce, nikoli zápis do.
Konstruktory
SortedList() |
Inicializuje novou instanci SortedList třídy, která je prázdná, má výchozí počáteční kapacitu a je seřazena podle IComparable rozhraní implementovaného jednotlivými klíči přidanými do objektu SortedList . |
SortedList(IComparer) |
Inicializuje novou instanci SortedList třídy, která je prázdná, má výchozí počáteční kapacitu a je seřazena podle zadaného IComparer rozhraní. |
SortedList(IComparer, Int32) |
Inicializuje novou instanci SortedList třídy, která je prázdná, má zadanou počáteční kapacitu a je seřazena podle zadaného IComparer rozhraní. |
SortedList(IDictionary) |
Inicializuje novou instanci SortedList třídy, která obsahuje prvky zkopírované ze zadaného slovníku, má stejnou počáteční kapacitu jako počet zkopírovaných prvků a je seřazena podle IComparable rozhraní implementovaného jednotlivými klíči. |
SortedList(IDictionary, IComparer) |
Inicializuje novou instanci SortedList třídy, která obsahuje prvky zkopírované ze zadaného slovníku, má stejnou počáteční kapacitu jako počet zkopírovaných prvků a je seřazena podle zadaného IComparer rozhraní. |
SortedList(Int32) |
Inicializuje novou instanci SortedList třídy, která je prázdná, má zadanou počáteční kapacitu a je seřazena podle IComparable rozhraní implementovaného jednotlivými klíči přidanými do objektu SortedList . |
Vlastnosti
Capacity |
Získá nebo nastaví kapacitu objektu SortedList . |
Count |
Získá počet prvků obsažených v objektu SortedList . |
IsFixedSize |
Získá hodnotu označující, zda SortedList má objekt pevnou velikost. |
IsReadOnly |
Získá hodnotu označující, zda SortedList objekt je jen pro čtení. |
IsSynchronized |
Získá hodnotu označující, zda je synchronizován přístup k objektu SortedList (bezpečný z více vláken). |
Item[Object] |
Získá nebo nastaví hodnotu přidruženou k určitému klíči v objektu SortedList . |
Keys |
Získá klíče v objektu SortedList . |
SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k objektu SortedList . |
Values |
Získá hodnoty v objektu SortedList . |
Metody
Add(Object, Object) |
Přidá prvek se zadaným klíčem a hodnotou k objektu SortedList . |
Clear() |
Odebere všechny prvky z objektu SortedList . |
Clone() |
Vytvoří mělkou kopii objektu SortedList . |
Contains(Object) |
Určuje, zda SortedList objekt obsahuje určitý klíč. |
ContainsKey(Object) |
Určuje, zda SortedList objekt obsahuje určitý klíč. |
ContainsValue(Object) |
Určuje, zda SortedList objekt obsahuje konkrétní hodnotu. |
CopyTo(Array, Int32) |
Zkopíruje SortedList elementy do jednorozměrného Array objektu, počínaje zadaným indexem v poli. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetByIndex(Int32) |
Získá hodnotu v zadaném indexu objektu SortedList . |
GetEnumerator() |
IDictionaryEnumerator Vrátí objekt, který iteruje objektemSortedList. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetKey(Int32) |
Získá klíč v zadaném indexu objektu SortedList . |
GetKeyList() |
Získá klíče v objektu SortedList . |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
GetValueList() |
Získá hodnoty v objektu SortedList . |
IndexOfKey(Object) |
Vrátí nulový index zadaného klíče v objektu SortedList . |
IndexOfValue(Object) |
Vrátí nulový index prvního výskytu zadané hodnoty v objektu SortedList . |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
Remove(Object) |
Odebere prvek se zadaným klíčem z objektu SortedList . |
RemoveAt(Int32) |
Odebere prvek v zadaném indexu objektu SortedList . |
SetByIndex(Int32, Object) |
Nahradí hodnotu v určitém indexu v objektu SortedList . |
Synchronized(SortedList) |
Vrátí pro objekt synchronizovanou obálku (bezpečnou SortedList pro vlákna). |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
TrimToSize() |
Nastaví kapacitu na skutečný počet prvků v objektu SortedList . |
Explicitní implementace rozhraní
IEnumerable.GetEnumerator() |
Vrátí hodnotu IEnumerator , která iteruje přes SortedList. |
Metody rozšíření
Cast<TResult>(IEnumerable) |
Přetypuje prvky objektu na IEnumerable zadaný typ. |
OfType<TResult>(IEnumerable) |
Filtruje prvky objektu IEnumerable na základě zadaného typu. |
AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
AsQueryable(IEnumerable) |
Převede objekt na IEnumerableIQueryable. |
Platí pro
Bezpečný přístup z více vláken
Veřejné statické členy (Shared
v jazyce Visual Basic) tohoto typu jsou bezpečné z více vláken. U členů instancí není zaručena bezpečnost pro přístup z více vláken.
Objekt SortedList může současně podporovat více čtenářů, pokud se kolekce nezmění. Aby byla zajištěna bezpečnost SortedListvlákna nástroje , musí být všechny operace provedeny prostřednictvím obálky vrácené metodou Synchronized(SortedList) .
Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.