SortedList Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje kolekcję par klucz/wartość, które są sortowane według kluczy i są dostępne według klucza i według indeksu.
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
- Dziedziczenie
-
SortedList
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć i zainicjować SortedList obiekt oraz jak wydrukować jego klucze i wartości.
#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: !
Uwagi
Dostęp SortedList do elementu można uzyskać za pomocą jego klucza, takiego jak element w dowolnej IDictionary implementacji lub według jego indeksu, jak element w dowolnej IList implementacji.
Ważne
Nie zalecamy używania SortedList
klasy do nowego programowania. Zamiast tego zalecamy użycie klasy ogólnej System.Collections.Generic.SortedList<TKey,TValue> . Aby uzyskać więcej informacji, zobacz Kolekcje inne niż ogólne nie powinny być używane w usłudze GitHub.
SortedList Obiekt wewnętrznie utrzymuje dwie tablice do przechowywania elementów listy, czyli jednej tablicy dla kluczy i innej tablicy skojarzonych wartości. Każdy element jest parą klucz/wartość, do których można uzyskać dostęp jako DictionaryEntry obiekt. Kluczem nie może być null
, ale może być wartość.
Pojemność SortedList obiektu to liczba elementów, które SortedList można przechowywać. Ponieważ elementy są dodawane do elementu SortedList, pojemność jest automatycznie zwiększana zgodnie z wymaganiami za pośrednictwem reallocation. Pojemność można zmniejszyć przez wywołanie TrimToSize lub jawne ustawienie Capacity właściwości.
.NET Framework tylko: w przypadku bardzo dużych SortedList obiektów można zwiększyć maksymalną pojemność do 2 miliardów elementów w systemie 64-bitowym, ustawiając enabled
atrybut <gcAllowVeryLargeObjects>
elementu konfiguracji na true
w środowisku czasu wykonywania.
Elementy SortedList obiektu są sortowane według kluczy zgodnie z określoną implementacją określoną IComparer podczas SortedList tworzenia lub zgodnie z IComparable implementacją podaną przez same klucze. W obu przypadkach element SortedList nie zezwala na zduplikowane klucze.
Sekwencja indeksu jest oparta na sekwencji sortowania. Po dodaniu elementu jest on wstawiany SortedList w prawidłowej kolejności sortowania, a indeksowanie odpowiednio się dostosowuje. Po usunięciu elementu indeksowanie również jest odpowiednio dostosowywane. W związku z tym indeks określonej pary klucz/wartość może ulec zmianie w miarę dodawania lub usuwania elementów z SortedList obiektu.
Operacje na SortedList obiekcie są zwykle wolniejsze niż operacje na Hashtable obiekcie z powodu sortowania. Jednak zapewnia SortedList większą elastyczność, umożliwiając dostęp do wartości za pośrednictwem skojarzonych kluczy lub indeksów.
Dostęp do elementów w tej kolekcji można uzyskać przy użyciu indeksu całkowitego. Indeksy w tej kolekcji są oparte na zera.
Instrukcja foreach
języka C# (for each
w Visual Basic) zwraca obiekt typu elementów w kolekcji. Ponieważ każdy element SortedList obiektu jest parą klucz/wartość, typ elementu nie jest typem klucza ani typem wartości. Zamiast tego typ elementu to DictionaryEntry. Na przykład:
for each (DictionaryEntry de in mySortedList)
{
//...
}
foreach (DictionaryEntry de in mySortedList)
{
//...
}
For Each de As DictionaryEntry In mySortedList
'...
Next de
Instrukcja foreach
jest otoką wokół modułu wyliczającego, który umożliwia odczytywanie tylko z, a nie zapisywania do kolekcji.
Konstruktory
SortedList() |
Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma domyślną pojemność początkową i jest sortowana zgodnie z IComparable interfejsem zaimplementowanym przez każdy klucz dodany do SortedList obiektu. |
SortedList(IComparer) |
Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma domyślną pojemność początkową i jest sortowana zgodnie z określonym IComparer interfejsem. |
SortedList(IComparer, Int32) |
Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma określoną pojemność początkową i jest sortowana zgodnie z określonym IComparer interfejsem. |
SortedList(IDictionary) |
Inicjuje nowe wystąpienie SortedList klasy, która zawiera elementy skopiowane z określonego słownika, ma taką samą pojemność początkową jak liczba skopiowanych elementów i jest sortowana zgodnie z interfejsem IComparable zaimplementowanym przez każdy klucz. |
SortedList(IDictionary, IComparer) |
Inicjuje nowe wystąpienie SortedList klasy zawierającej elementy skopiowane z określonego słownika, ma taką samą pojemność początkową jak liczba skopiowanych elementów i jest sortowana zgodnie z określonym IComparer interfejsem. |
SortedList(Int32) |
Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma określoną pojemność początkową i jest sortowana zgodnie z interfejsem IComparable zaimplementowanym przez każdy klucz dodany do SortedList obiektu. |
Właściwości
Capacity |
Pobiera lub ustawia pojemność SortedList obiektu. |
Count |
Pobiera liczbę elementów zawartych w SortedList obiekcie. |
IsFixedSize |
Pobiera wartość wskazującą, czy SortedList obiekt ma stały rozmiar. |
IsReadOnly |
Pobiera wartość wskazującą SortedList , czy obiekt jest tylko do odczytu. |
IsSynchronized |
Pobiera wartość wskazującą, czy dostęp do SortedList obiektu jest synchronizowany (bezpieczny wątek). |
Item[Object] |
Pobiera lub ustawia wartość skojarzona z określonym kluczem SortedList w obiekcie. |
Keys |
Pobiera klucze w SortedList obiekcie. |
SyncRoot |
Pobiera obiekt, który może służyć do synchronizowania dostępu do SortedList obiektu. |
Values |
Pobiera wartości w SortedList obiekcie. |
Metody
Add(Object, Object) |
Dodaje element z określonym kluczem i wartością SortedList do obiektu. |
Clear() |
Usuwa wszystkie elementy z SortedList obiektu. |
Clone() |
Tworzy płytkią kopię SortedList obiektu. |
Contains(Object) |
Określa, czy SortedList obiekt zawiera określony klucz. |
ContainsKey(Object) |
Określa, czy SortedList obiekt zawiera określony klucz. |
ContainsValue(Object) |
Określa, czy SortedList obiekt zawiera określoną wartość. |
CopyTo(Array, Int32) |
Kopiuje SortedList elementy do obiektu jednowymiarowego Array , zaczynając od określonego indeksu w tablicy. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetByIndex(Int32) |
Pobiera wartość w określonym indeksie SortedList obiektu. |
GetEnumerator() |
IDictionaryEnumerator Zwraca obiekt, który iteruje przez SortedList obiekt. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetKey(Int32) |
Pobiera klucz w określonym indeksie SortedList obiektu. |
GetKeyList() |
Pobiera klucze w SortedList obiekcie. |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
GetValueList() |
Pobiera wartości w SortedList obiekcie. |
IndexOfKey(Object) |
Zwraca indeks zerowy określonego klucza w SortedList obiekcie. |
IndexOfValue(Object) |
Zwraca indeks oparty na zerze pierwszego wystąpienia określonej wartości w SortedList obiekcie. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
Remove(Object) |
Usuwa element z określonym kluczem SortedList z obiektu. |
RemoveAt(Int32) |
Usuwa element w określonym indeksie SortedList obiektu. |
SetByIndex(Int32, Object) |
Zamienia wartość w określonym indeksie SortedList w obiekcie. |
Synchronized(SortedList) |
Zwraca zsynchronizowaną (bezpieczną SortedList wątkowo) otokę obiektu. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
TrimToSize() |
Ustawia pojemność na rzeczywistą liczbę elementów w SortedList obiekcie. |
Jawne implementacje interfejsu
IEnumerable.GetEnumerator() |
IEnumerator Zwraca iterowanie SortedListprzez element . |
Metody rozszerzania
Cast<TResult>(IEnumerable) |
Rzutuje elementy elementu IEnumerable do określonego typu. |
OfType<TResult>(IEnumerable) |
Filtruje elementy elementu IEnumerable na podstawie określonego typu. |
AsParallel(IEnumerable) |
Umożliwia równoległość zapytania. |
AsQueryable(IEnumerable) |
Konwertuje element IEnumerable na .IQueryable |
Dotyczy
Bezpieczeństwo wątkowe
Publiczne statyczne (Shared
w Visual Basic) elementy członkowskie tego typu są bezpieczne wątkami. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.
Obiekt SortedList może obsługiwać wiele czytników jednocześnie, o ile kolekcja nie jest modyfikowana. Aby zagwarantować bezpieczeństwo wątków elementu SortedList, wszystkie operacje należy wykonać za pośrednictwem otoki zwróconej przez metodę Synchronized(SortedList) .
Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.