SortedList Klasa

Definicja

Reprezentuje kolekcję par klucz/wartość, które są posortowane według kluczy i są dostępne dla klucza i według indeksu.Represents a collection of key/value pairs that are sorted by the keys and are accessible by key and by index.

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
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortedList = class
    interface IDictionary
    interface ICloneable
    interface ICollection
    interface IEnumerable
Public Class SortedList
Implements IDictionary
Public Class SortedList
Implements ICloneable, IDictionary
Dziedziczenie
SortedList
Atrybuty
Implementuje

Przykłady

Poniższy przykład kodu pokazuje, jak utworzyć i zainicjować SortedList obiekt oraz jak drukować jego klucze i wartości.The following code example shows how to create and initialize a SortedList object and how to print out its keys and values.

#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 SamplesSortedList  {

   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

SortedListDo elementu można uzyskać dostęp za pomocą jego klucza, takiego jak element w dowolnej IDictionary implementacji lub jego indeks, taki jak element w dowolnej IList implementacji.A SortedList element can be accessed by its key, like an element in any IDictionary implementation, or by its index, like an element in any IList implementation.

Ważne

Nie zalecamy używania SortedList klasy do nowych celów programistycznych.We don't recommend that you use the SortedList class for new development. Zamiast tego zaleca się użycie klasy generycznej System.Collections.Generic.SortedList<TKey,TValue> .Instead, we recommend that you use the generic System.Collections.Generic.SortedList<TKey,TValue> class. Aby uzyskać więcej informacji, zobacz kolekcje nieogólne nie mogą być używane w serwisie GitHub.For more information, see Non-generic collections shouldn't be used on GitHub.

SortedListObiekt wewnętrznie utrzymuje dwie tablice do przechowywania elementów listy, czyli jedną tablicę dla kluczy i inną tablicę dla skojarzonych wartości.A SortedList object internally maintains two arrays to store the elements of the list; that is, one array for the keys and another array for the associated values. Każdy element jest parą klucz/wartość, do której można uzyskać dostęp jako DictionaryEntry obiekt.Each element is a key/value pair that can be accessed as a DictionaryEntry object. Klucz nie może być null , ale może być wartością.A key cannot be null, but a value can be.

Pojemność SortedList obiektu to liczba elementów, które SortedList mogą być przechowywane.The capacity of a SortedList object is the number of elements the SortedList can hold. Gdy elementy są dodawane do SortedList , pojemność jest automatycznie zwiększana zgodnie z wymaganiami ponownej alokacji.As elements are added to a SortedList, the capacity is automatically increased as required through reallocation. Wydajność można zmniejszyć przez wywołanie TrimToSize lub przez ustawienie Capacity właściwości jawnie.The capacity can be decreased by calling TrimToSize or by setting the Capacity property explicitly.

Tylko .NET Framework: W przypadku bardzo dużych SortedList obiektów można zwiększyć maksymalną pojemność do 2 000 000 000 elementów w systemie 64-bitowym, ustawiając enabled atrybut <gcAllowVeryLargeObjects> elementu konfiguracji na true w środowisku wykonawczym..NET Framework only: For very large SortedList objects, you can increase the maximum capacity to 2 billion elements on a 64-bit system by setting the enabled attribute of the <gcAllowVeryLargeObjects> configuration element to true in the run-time environment.

Elementy SortedList obiektu są sortowane według kluczy zgodnie z określoną IComparer implementacją określoną podczas SortedList tworzenia lub zgodnie z IComparable implementacją podaną przez same klucze.The elements of a SortedList object are sorted by the keys either according to a specific IComparer implementation specified when the SortedList is created or according to the IComparable implementation provided by the keys themselves. W obu przypadkach wartość nie SortedList zezwala na duplikowanie kluczy.In either case, a SortedList does not allow duplicate keys.

Sekwencja indeksów jest oparta na sekwencji sortowania.The index sequence is based on the sort sequence. Gdy element jest dodawany, jest wstawiany do SortedList w poprawnej kolejności sortowania, a indeksowanie odpowiednio dostosowuje.When an element is added, it is inserted into SortedList in the correct sort order, and the indexing adjusts accordingly. Po usunięciu elementu indeksowanie również odpowiednio dostosowuje.When an element is removed, the indexing also adjusts accordingly. W związku z tym indeks określonej pary klucz/wartość może ulec zmianie, gdy elementy są dodawane lub usuwane z SortedList obiektu.Therefore, the index of a specific key/value pair might change as elements are added or removed from the SortedList object.

Operacje na SortedList obiekcie mogą być wolniejsze niż operacje na obiekcie ze Hashtable względu na sortowanie.Operations on a SortedList object tend to be slower than operations on a Hashtable object because of the sorting. SortedListOferuje jednak większą elastyczność dzięki umożliwieniu dostępu do wartości za pomocą skojarzonych kluczy lub indeksów.However, the SortedList offers more flexibility by allowing access to the values either through the associated keys or through the indexes.

Dostęp do elementów w tej kolekcji można uzyskać przy użyciu indeksu liczb całkowitych.Elements in this collection can be accessed using an integer index. Indeksy w tej kolekcji są oparte na zero.Indexes in this collection are zero-based.

foreachInstrukcja języka C# ( for each w Visual Basic) zwraca obiekt typu elementów w kolekcji.The foreach statement of the C# language (for each in Visual Basic) returns an object of the type of the elements in the collection. Ponieważ każdy element SortedList obiektu jest parą klucz/wartość, typ elementu nie jest typem klucza lub typem wartości.Since each element of the SortedList object is a key/value pair, the element type is not the type of the key or the type of the value. Zamiast tego typ elementu to DictionaryEntry .Rather, the element type is DictionaryEntry. Na przykład:For example:

for each (DictionaryEntry de in mySortedList)
{
    //...
}
foreach (DictionaryEntry de in mySortedList)
{
    //...
}
For Each de As DictionaryEntry In mySortedList
    '...
Next de

foreachInstrukcja to otoka wokół modułu wyliczającego, który umożliwia odczytywanie tylko z kolekcji.The foreach statement is a wrapper around the enumerator, which allows only reading from, not writing to, the collection.

Konstruktory

SortedList()

Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma domyślną pojemność początkową i jest sortowane według IComparable interfejsu zaimplementowanego przez każdy klucz dodany do SortedList obiektu.Initializes a new instance of the SortedList class that is empty, has the default initial capacity, and is sorted according to the IComparable interface implemented by each key added to the SortedList object.

SortedList(IComparer)

Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma domyślną pojemność początkową i jest sortowane zgodnie z określonym IComparer interfejsem.Initializes a new instance of the SortedList class that is empty, has the default initial capacity, and is sorted according to the specified IComparer interface.

SortedList(IComparer, Int32)

Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma określoną pojemność początkową i jest sortowane zgodnie z określonym IComparer interfejsem.Initializes a new instance of the SortedList class that is empty, has the specified initial capacity, and is sorted according to the specified IComparer interface.

SortedList(IDictionary)

Inicjuje nowe wystąpienie SortedList klasy, która zawiera elementy skopiowane z określonego słownika, ma taką samą początkową pojemność jak liczba skopiowanych elementów i jest sortowana zgodnie z IComparable interfejsem zaimplementowanym przez każdy klucz.Initializes a new instance of the SortedList class that contains elements copied from the specified dictionary, has the same initial capacity as the number of elements copied, and is sorted according to the IComparable interface implemented by each key.

SortedList(IDictionary, IComparer)

Inicjuje nowe wystąpienie SortedList klasy, która zawiera elementy skopiowane z określonego słownika, ma taką samą początkową pojemność jak liczba skopiowanych elementów i jest sortowana zgodnie z określonym IComparer interfejsem.Initializes a new instance of the SortedList class that contains elements copied from the specified dictionary, has the same initial capacity as the number of elements copied, and is sorted according to the specified IComparer interface.

SortedList(Int32)

Inicjuje nowe wystąpienie SortedList klasy, która jest pusta, ma określoną pojemność początkową i jest sortowane według IComparable interfejsu zaimplementowanego przez każdy klucz dodany do SortedList obiektu.Initializes a new instance of the SortedList class that is empty, has the specified initial capacity, and is sorted according to the IComparable interface implemented by each key added to the SortedList object.

Właściwości

Capacity

Pobiera lub ustawia pojemność SortedList obiektu.Gets or sets the capacity of a SortedList object.

Count

Pobiera liczbę elementów zawartych w SortedList obiekcie.Gets the number of elements contained in a SortedList object.

IsFixedSize

Pobiera wartość wskazującą, czy SortedList obiekt ma stały rozmiar.Gets a value indicating whether a SortedList object has a fixed size.

IsReadOnly

Pobiera wartość wskazującą, czy SortedList obiekt jest tylko do odczytu.Gets a value indicating whether a SortedList object is read-only.

IsSynchronized

Pobiera wartość wskazującą, czy dostęp do SortedList obiektu jest synchronizowany (bezpieczny wątkowo).Gets a value indicating whether access to a SortedList object is synchronized (thread safe).

Item[Object]

Pobiera lub ustawia wartość skojarzoną z określonym kluczem w SortedList obiekcie.Gets or sets the value associated with a specific key in a SortedList object.

Keys

Pobiera klucze w SortedList obiekcie.Gets the keys in a SortedList object.

SyncRoot

Pobiera obiekt, który może służyć do synchronizowania dostępu do SortedList obiektu.Gets an object that can be used to synchronize access to a SortedList object.

Values

Pobiera wartości w SortedList obiekcie.Gets the values in a SortedList object.

Metody

Add(Object, Object)

Dodaje element z określonym kluczem i wartością do SortedList obiektu.Adds an element with the specified key and value to a SortedList object.

Clear()

Usuwa wszystkie elementy z SortedList obiektu.Removes all elements from a SortedList object.

Clone()

Tworzy skróconą kopię SortedList obiektu.Creates a shallow copy of a SortedList object.

Contains(Object)

Określa, czy SortedList obiekt zawiera określony klucz.Determines whether a SortedList object contains a specific key.

ContainsKey(Object)

Określa, czy SortedList obiekt zawiera określony klucz.Determines whether a SortedList object contains a specific key.

ContainsValue(Object)

Określa, czy SortedList obiekt zawiera konkretną wartość.Determines whether a SortedList object contains a specific value.

CopyTo(Array, Int32)

Kopiuje SortedList elementy do jednowymiarowego Array obiektu, rozpoczynając od określonego indeksu w tablicy.Copies SortedList elements to a one-dimensional Array object, starting at the specified index in the array.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetByIndex(Int32)

Pobiera wartość przy określonym indeksie SortedList obiektu.Gets the value at the specified index of a SortedList object.

GetEnumerator()

Zwraca IDictionaryEnumerator obiekt, który wykonuje iterację przez SortedList obiekt.Returns an IDictionaryEnumerator object that iterates through a SortedList object.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetKey(Int32)

Pobiera klucz przy określonym indeksie SortedList obiektu.Gets the key at the specified index of a SortedList object.

GetKeyList()

Pobiera klucze w SortedList obiekcie.Gets the keys in a SortedList object.

GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
GetValueList()

Pobiera wartości w SortedList obiekcie.Gets the values in a SortedList object.

IndexOfKey(Object)

Zwraca indeks (liczony od zera) określonego klucza w SortedList obiekcie.Returns the zero-based index of the specified key in a SortedList object.

IndexOfValue(Object)

Zwraca indeks (liczony od zera) pierwszego wystąpienia określonej wartości w SortedList obiekcie.Returns the zero-based index of the first occurrence of the specified value in a SortedList object.

MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
Remove(Object)

Usuwa element z określonym kluczem z SortedList obiektu.Removes the element with the specified key from a SortedList object.

RemoveAt(Int32)

Usuwa element w określonym indeksie SortedList obiektu.Removes the element at the specified index of a SortedList object.

SetByIndex(Int32, Object)

Zamienia wartość w określonym indeksie w SortedList obiekcie.Replaces the value at a specific index in a SortedList object.

Synchronized(SortedList)

Zwraca zsynchronizowaną (z bezpiecznym wątkem) otokę dla SortedList obiektu.Returns a synchronized (thread-safe) wrapper for a SortedList object.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
TrimToSize()

Ustawia pojemność na rzeczywistą liczbę elementów w SortedList obiekcie.Sets the capacity to the actual number of elements in a SortedList object.

Jawne implementacje interfejsu

IEnumerable.GetEnumerator()

Zwraca wartość IEnumerator , która wykonuje iterację przez SortedList .Returns an IEnumerator that iterates through the SortedList.

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy elementu IEnumerable do określonego typu.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable w oparciu o określony typ.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Włącza przetwarzanie równoległe zapytania.Enables parallelization of a query.

AsQueryable(IEnumerable)

Konwertuje IEnumerable do IQueryable .Converts an IEnumerable to an IQueryable.

Dotyczy

Bezpieczeństwo wątkowe

Publiczne statyczne ( Shared w Visual Basic) członkowie tego typu są bezpieczne wątkowo.Public static (Shared in Visual Basic) members of this type are thread safe. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.Any instance members are not guaranteed to be thread safe.

SortedListObiekt może obsługiwać wielu czytników współbieżnie, o ile kolekcja nie jest modyfikowana.A SortedList object can support multiple readers concurrently, as long as the collection is not modified. Aby zagwarantować bezpieczeństwo wątku SortedList , wszystkie operacje muszą być wykonywane przez otokę zwracaną przez Synchronized(SortedList) metodę.To guarantee the thread safety of the SortedList, all operations must be done through the wrapper returned by the Synchronized(SortedList) method.

Wyliczanie w kolekcji nie jest wewnętrznie procedurą odporną na wielowątkowość.Enumerating through a collection is intrinsically not a thread-safe procedure. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 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.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Zobacz też