SortedList<TKey,TValue> Konstruktory

Definicja

Inicjuje nowe wystąpienie klasy SortedList<TKey,TValue>.Initializes a new instance of the SortedList<TKey,TValue> class.

Przeciążenia

SortedList<TKey,TValue>()

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma domyślną pojemność początkową i używa wartości domyślnej IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the default initial capacity, and uses the default IComparer<T>.

SortedList<TKey,TValue>(IComparer<TKey>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma domyślną pojemność początkową i używa określonego IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IComparer<T>.

SortedList<TKey,TValue>(IDictionary<TKey,TValue>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która zawiera elementy skopiowane z określonego IDictionary<TKey,TValue> , ma wystarczającą pojemność, aby pomieścić liczbę skopiowanych elementów i używa wartości domyślnej IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue>, has sufficient capacity to accommodate the number of elements copied, and uses the default IComparer<T>.

SortedList<TKey,TValue>(Int32)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma określoną pojemność początkową i używa wartości domyślnej IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the specified initial capacity, and uses the default IComparer<T>.

SortedList<TKey,TValue>(IDictionary<TKey,TValue>, IComparer<TKey>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która zawiera elementy skopiowane z określonego IDictionary<TKey,TValue> , ma wystarczającą pojemność, aby pomieścić liczbę skopiowanych elementów i używa określonego IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue>, has sufficient capacity to accommodate the number of elements copied, and uses the specified IComparer<T>.

SortedList<TKey,TValue>(Int32, IComparer<TKey>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma określoną pojemność początkową i używa określonego IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IComparer<T>.

SortedList<TKey,TValue>()

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma domyślną pojemność początkową i używa wartości domyślnej IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the default initial capacity, and uses the default IComparer<T>.

public:
 SortedList();
public SortedList ();
Public Sub New ()

Przykłady

Poniższy przykład kodu tworzy puste SortedList<TKey,TValue> ciągi z kluczami ciągu i używa Add metody do dodawania niektórych elementów.The following code example creates an empty SortedList<TKey,TValue> of strings with string keys and uses the Add method to add some elements. W przykładzie pokazano, że Add Metoda zgłasza ArgumentException podczas próby dodania zduplikowanego klucza.The example demonstrates that the Add method throws an ArgumentException when attempting to add a duplicate key.

Ten przykład kodu jest częścią większego przykładu dostarczonego dla SortedList<TKey,TValue> klasy.This code example is part of a larger example provided for the SortedList<TKey,TValue> class.

// Create a new sorted list of strings, with string
// keys.
SortedList<String^, String^>^ openWith =
    gcnew SortedList<String^, String^>();

// Add some elements to the list. There are no 
// duplicate keys, but some of the values are duplicates.
openWith->Add("txt", "notepad.exe");
openWith->Add("bmp", "paint.exe");
openWith->Add("dib", "paint.exe");
openWith->Add("rtf", "wordpad.exe");

// The Add method throws an exception if the new key is
// already in the list.
try
{
    openWith->Add("txt", "winword.exe");
}
catch (ArgumentException^)
{
    Console::WriteLine("An element with Key = \"txt\" already exists.");
}
// Create a new sorted list of strings, with string
// keys.
SortedList<string, string> openWith =
    new SortedList<string, string>();

// Add some elements to the list. There are no
// duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

// The Add method throws an exception if the new key is
// already in the list.
try
{
    openWith.Add("txt", "winword.exe");
}
catch (ArgumentException)
{
    Console.WriteLine("An element with Key = \"txt\" already exists.");
}
' Create a new sorted list of strings, with string 
' keys. 
Dim openWith As New SortedList(Of String, String)

' Add some elements to the list. There are no 
' duplicate keys, but some of the values are duplicates.
openWith.Add("txt", "notepad.exe")
openWith.Add("bmp", "paint.exe")
openWith.Add("dib", "paint.exe")
openWith.Add("rtf", "wordpad.exe")

' The Add method throws an exception if the new key is 
' already in the list.
Try
    openWith.Add("txt", "winword.exe")
Catch 
    Console.WriteLine("An element with Key = ""txt"" already exists.")
End Try

Uwagi

Każdy klucz w a SortedList<TKey,TValue> musi być unikatowy zgodnie z domyślną wartością porównującą.Every key in a SortedList<TKey,TValue> must be unique according to the default comparer.

Ten konstruktor używa wartości domyślnej dla początkowej pojemności SortedList<TKey,TValue> .This constructor uses the default value for the initial capacity of the SortedList<TKey,TValue>. Aby ustawić pojemność początkową, użyj SortedList<TKey,TValue>(Int32) konstruktora.To set the initial capacity, use the SortedList<TKey,TValue>(Int32) constructor. Jeśli końcowy rozmiar kolekcji można oszacować, określenie początkowej pojemności eliminuje konieczność wykonywania wielu operacji zmiany rozmiaru podczas dodawania elementów do SortedList<TKey,TValue> .If the final size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the SortedList<TKey,TValue>.

Ten konstruktor używa domyślnej usługi porównującej dla TKey .This constructor uses the default comparer for TKey. Aby określić moduł porównujący, należy użyć SortedList<TKey,TValue>(IComparer<TKey>) konstruktora.To specify a comparer, use the SortedList<TKey,TValue>(IComparer<TKey>) constructor. Domyślne ustawienia porównujące Comparer<T>.Default sprawdzają, czy typ klucza TKey implementuje System.IComparable<T> i używa tej implementacji, jeśli jest dostępny.The default comparer Comparer<T>.Default checks whether the key type TKey implements System.IComparable<T> and uses that implementation, if available. Jeśli nie, Comparer<T>.Default sprawdza, czy typ klucza TKey implementuje System.IComparable .If not, Comparer<T>.Default checks whether the key type TKey implements System.IComparable. Jeśli typ klucza nie TKey implementuje żadnego interfejsu, można określić System.Collections.Generic.IComparer<T> implementację w przeciążenie konstruktora, który akceptuje comparer parametr.If the key type TKey does not implement either interface, you can specify a System.Collections.Generic.IComparer<T> implementation in a constructor overload that accepts a comparer parameter.

Ten konstruktor jest operacją O (1).This constructor is an O(1) operation.

Zobacz też

Dotyczy

SortedList<TKey,TValue>(IComparer<TKey>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma domyślną pojemność początkową i używa określonego IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the default initial capacity, and uses the specified IComparer<T>.

public:
 SortedList(System::Collections::Generic::IComparer<TKey> ^ comparer);
public SortedList (System.Collections.Generic.IComparer<TKey> comparer);
public SortedList (System.Collections.Generic.IComparer<TKey>? comparer);
new System.Collections.Generic.SortedList<'Key, 'Value> : System.Collections.Generic.IComparer<'Key> -> System.Collections.Generic.SortedList<'Key, 'Value>
Public Sub New (comparer As IComparer(Of TKey))

Parametry

comparer
IComparer<TKey>

IComparer<T>Implementacja do użycia podczas porównywania kluczy.The IComparer<T> implementation to use when comparing keys.

-lub--or- null , aby użyć wartości domyślnej Comparer<T> dla typu klucza.null to use the default Comparer<T> for the type of the key.

Przykłady

Poniższy przykład kodu tworzy posortowaną listę z niezależnym od wielkości literą dla bieżącej kultury.The following code example creates a sorted list with a case-insensitive comparer for the current culture. Przykład dodaje cztery elementy, niektóre z kluczami małych liter i niektóre z kluczami wielkich liter.The example adds four elements, some with lower-case keys and some with upper-case keys. Przykład próbuje dodać element z kluczem, który różni się od istniejącego klucza tylko w przypadku, przechwytuje wyjątek, a następnie wyświetla komunikat o błędzie.The example then attempts to add an element with a key that differs from an existing key only by case, catches the resulting exception, and displays an error message. Na koniec przykład wyświetla elementy w kolejności sortowania bez uwzględniania wielkości liter.Finally, the example displays the elements in case-insensitive sort order.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create a new sorted list of strings, with string keys and
        // a case-insensitive comparer for the current culture.
        SortedList<string, string> openWith =
                      new SortedList<string, string>(
                          StringComparer.CurrentCultureIgnoreCase);

        // Add some elements to the list.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("DIB", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // Try to add a fifth element with a key that is the same
        // except for case; this would be allowed with the default
        // comparer.
        try
        {
            openWith.Add("BMP", "paint.exe");
        }
        catch (ArgumentException)
        {
            Console.WriteLine("\nBMP is already in the sorted list.");
        }

        // List the contents of the sorted list.
        Console.WriteLine();
        foreach( KeyValuePair<string, string> kvp in openWith )
        {
            Console.WriteLine("Key = {0}, Value = {1}", kvp.Key,
                kvp.Value);
        }
    }
}

/* This code example produces the following output:

BMP is already in the sorted list.

Key = bmp, Value = paint.exe
Key = DIB, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
 */
Imports System.Collections.Generic

Public Class Example
    
    Public Shared Sub Main() 

        ' Create a new sorted list of strings, with string keys and
        ' a case-insensitive comparer for the current culture.
        Dim openWith As New SortedList(Of String, String)( _
            StringComparer.CurrentCultureIgnoreCase)
        
        ' Add some elements to the list. 
        openWith.Add("txt", "notepad.exe")
        openWith.Add("bmp", "paint.exe")
        openWith.Add("DIB", "paint.exe")
        openWith.Add("rtf", "wordpad.exe")

        ' Try to add a fifth element with a key that is the same 
        ' except for case; this would be allowed with the default
        ' comparer.
        Try
            openWith.Add("BMP", "paint.exe")
        Catch ex As ArgumentException
            Console.WriteLine(vbLf & "BMP is already in the sorted list.")
        End Try
        
        ' List the contents of the sorted list.
        Console.WriteLine()
        For Each kvp As KeyValuePair(Of String, String) In openWith
            Console.WriteLine("Key = {0}, Value = {1}", _
                kvp.Key, kvp.Value)
        Next kvp

    End Sub

End Class

' This code example produces the following output:
'
'BMP is already in the sorted list.
'
'Key = bmp, Value = paint.exe
'Key = DIB, Value = paint.exe
'Key = rtf, Value = wordpad.exe
'Key = txt, Value = notepad.exe

Uwagi

Każdy klucz w a SortedList<TKey,TValue> musi być unikatowy zgodnie z określoną regułą porównującą.Every key in a SortedList<TKey,TValue> must be unique according to the specified comparer.

Ten konstruktor używa wartości domyślnej dla początkowej pojemności SortedList<TKey,TValue> .This constructor uses the default value for the initial capacity of the SortedList<TKey,TValue>. Aby ustawić pojemność początkową, użyj SortedList<TKey,TValue>(Int32, IComparer<TKey>) konstruktora.To set the initial capacity, use the SortedList<TKey,TValue>(Int32, IComparer<TKey>) constructor. Jeśli końcowy rozmiar kolekcji można oszacować, określenie początkowej pojemności eliminuje konieczność wykonywania wielu operacji zmiany rozmiaru podczas dodawania elementów do SortedList<TKey,TValue> .If the final size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the SortedList<TKey,TValue>.

Ten konstruktor jest operacją O (1).This constructor is an O(1) operation.

Zobacz też

Dotyczy

SortedList<TKey,TValue>(IDictionary<TKey,TValue>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która zawiera elementy skopiowane z określonego IDictionary<TKey,TValue> , ma wystarczającą pojemność, aby pomieścić liczbę skopiowanych elementów i używa wartości domyślnej IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue>, has sufficient capacity to accommodate the number of elements copied, and uses the default IComparer<T>.

public:
 SortedList(System::Collections::Generic::IDictionary<TKey, TValue> ^ dictionary);
public SortedList (System.Collections.Generic.IDictionary<TKey,TValue> dictionary);
new System.Collections.Generic.SortedList<'Key, 'Value> : System.Collections.Generic.IDictionary<'Key, 'Value> -> System.Collections.Generic.SortedList<'Key, 'Value>
Public Sub New (dictionary As IDictionary(Of TKey, TValue))

Parametry

dictionary
IDictionary<TKey,TValue>

IDictionary<TKey,TValue>Elementów, których elementy są kopiowane do nowego SortedList<TKey,TValue> .The IDictionary<TKey,TValue> whose elements are copied to the new SortedList<TKey,TValue>.

Wyjątki

dictionary to null.dictionary is null.

dictionary zawiera co najmniej jeden zduplikowany klucz.dictionary contains one or more duplicate keys.

Przykłady

Poniższy przykład kodu pokazuje, jak używać SortedList<TKey,TValue> do tworzenia posortowanej kopii informacji w a Dictionary<TKey,TValue> , przekazując Dictionary<TKey,TValue> do SortedList<TKey,TValue>(IDictionary<TKey,TValue>) konstruktora.The following code example shows how to use SortedList<TKey,TValue> to create a sorted copy of the information in a Dictionary<TKey,TValue>, by passing the Dictionary<TKey,TValue> to the SortedList<TKey,TValue>(IDictionary<TKey,TValue>) constructor.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create a new Dictionary of strings, with string keys.
        //
        Dictionary<string, string> openWith =
                                  new Dictionary<string, string>();

        // Add some elements to the dictionary.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // Create a SortedList of strings with string keys,
        // and initialize it with the contents of the Dictionary.
        SortedList<string, string> copy =
                  new SortedList<string, string>(openWith);

        // List the contents of the copy.
        Console.WriteLine();
        foreach( KeyValuePair<string, string> kvp in copy )
        {
            Console.WriteLine("Key = {0}, Value = {1}",
               kvp.Key, kvp.Value);
        }
    }
}

/* This code example produces the following output:

Key = bmp, Value = paint.exe
Key = dib, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
 */
Imports System.Collections.Generic

Public Class Example
    
    Public Shared Sub Main() 

        ' Create a new Dictionary of strings, with string 
        ' keys.
        Dim openWith As New Dictionary(Of String, String)
        
        ' Add some elements to the dictionary. 
        openWith.Add("txt", "notepad.exe")
        openWith.Add("bmp", "paint.exe")
        openWith.Add("dib", "paint.exe")
        openWith.Add("rtf", "wordpad.exe")
        
        ' Create a SortedList of strings with string keys, 
        ' and initialize it with the contents of the Dictionary.
        Dim copy As New SortedList(Of String, String)(openWith)

        ' List the sorted contents of the copy.
        Console.WriteLine()
        For Each kvp As KeyValuePair(Of String, String) In copy
            Console.WriteLine("Key = {0}, Value = {1}", _
                kvp.Key, kvp.Value)
        Next kvp

    End Sub

End Class

' This code example produces the following output:
'
'Key = bmp, Value = paint.exe
'Key = dib, Value = paint.exe
'Key = rtf, Value = wordpad.exe
'Key = txt, Value = notepad.exe

Uwagi

Każdy klucz w a SortedList<TKey,TValue> musi być unikatowy zgodnie z domyślną wartością porównującą; podobnie, każdy klucz w źródle dictionary musi również być unikatowy zgodnie z domyślną wartością porównującą.Every key in a SortedList<TKey,TValue> must be unique according to the default comparer; likewise, every key in the source dictionary must also be unique according to the default comparer.

Pojemność nowej SortedList<TKey,TValue> jest ustawiona na liczbę elementów w dictionary , więc nie ma potrzeby zmiany rozmiarów, gdy lista jest wypełniana.The capacity of the new SortedList<TKey,TValue> is set to the number of elements in dictionary, so no resizing takes place while the list is being populated.

Ten konstruktor używa domyślnej usługi porównującej dla TKey .This constructor uses the default comparer for TKey. Aby określić moduł porównujący, należy użyć SortedList<TKey,TValue>(IDictionary<TKey,TValue>, IComparer<TKey>) konstruktora.To specify a comparer, use the SortedList<TKey,TValue>(IDictionary<TKey,TValue>, IComparer<TKey>) constructor. Domyślne ustawienia porównujące Comparer<T>.Default sprawdzają, czy typ klucza TKey implementuje System.IComparable<T> i używa tej implementacji, jeśli jest dostępny.The default comparer Comparer<T>.Default checks whether the key type TKey implements System.IComparable<T> and uses that implementation, if available. Jeśli nie, Comparer<T>.Default sprawdza, czy typ klucza TKey implementuje System.IComparable .If not, Comparer<T>.Default checks whether the key type TKey implements System.IComparable. Jeśli typ klucza nie TKey implementuje żadnego interfejsu, można określić System.Collections.Generic.IComparer<T> implementację w przeciążenie konstruktora, który akceptuje comparer parametr.If the key type TKey does not implement either interface, you can specify a System.Collections.Generic.IComparer<T> implementation in a constructor overload that accepts a comparer parameter.

Jeśli dane w dictionary są sortowane, ten konstruktor jest n operacją o (), gdzie n jest liczbą elementów w dictionary .If the data in dictionary are sorted, this constructor is an O(n) operation, where n is the number of elements in dictionary. W przeciwnym razie jest to operacja o ( n * n ).Otherwise it is an O(n*n) operation.

Zobacz też

Dotyczy

SortedList<TKey,TValue>(Int32)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma określoną pojemność początkową i używa wartości domyślnej IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the specified initial capacity, and uses the default IComparer<T>.

public:
 SortedList(int capacity);
public SortedList (int capacity);
new System.Collections.Generic.SortedList<'Key, 'Value> : int -> System.Collections.Generic.SortedList<'Key, 'Value>
Public Sub New (capacity As Integer)

Parametry

capacity
Int32

Początkowa liczba elementów, które SortedList<TKey,TValue> może zawierać.The initial number of elements that the SortedList<TKey,TValue> can contain.

Wyjątki

Parametr capacity ma wartość niższą niż zero.capacity is less than zero.

Przykłady

Poniższy przykład kodu tworzy posortowaną listę z początkową pojemnością 4 i wypełnia ją 4 wpisami.The following code example creates a sorted list with an initial capacity of 4 and populates it with 4 entries.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create a new sorted list of strings, with string keys and
        // an initial capacity of 4.
        SortedList<string, string> openWith =
                               new SortedList<string, string>(4);

        // Add 4 elements to the list.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("dib", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // List the contents of the sorted list.
        Console.WriteLine();
        foreach( KeyValuePair<string, string> kvp in openWith )
        {
            Console.WriteLine("Key = {0}, Value = {1}",
               kvp.Key, kvp.Value);
        }
    }
}

/* This code example produces the following output:

Key = bmp, Value = paint.exe
Key = dib, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
 */
Imports System.Collections.Generic

Public Class Example
    
    Public Shared Sub Main() 

        ' Create a new sorted list of strings, with string keys and
        ' an initial capacity of 4.
        Dim openWith As New SortedList(Of String, String)(4)
        
        ' Add 4 elements to the list. 
        openWith.Add("txt", "notepad.exe")
        openWith.Add("bmp", "paint.exe")
        openWith.Add("dib", "paint.exe")
        openWith.Add("rtf", "wordpad.exe")
        
        ' List the contents of the sorted list.
        Console.WriteLine()
        For Each kvp As KeyValuePair(Of String, String) In openWith
            Console.WriteLine("Key = {0}, Value = {1}", _
                kvp.Key, kvp.Value)
        Next kvp

    End Sub

End Class

' This code example produces the following output:
'
'Key = bmp, Value = paint.exe
'Key = dib, Value = paint.exe
'Key = rtf, Value = wordpad.exe
'Key = txt, Value = notepad.exe

Uwagi

Każdy klucz w a SortedList<TKey,TValue> musi być unikatowy zgodnie z domyślną wartością porównującą.Every key in a SortedList<TKey,TValue> must be unique according to the default comparer.

Pojemność programu SortedList<TKey,TValue> to liczba elementów, które SortedList<TKey,TValue> mogą być przechowywane przed zmianą rozmiarów.The capacity of a SortedList<TKey,TValue> is the number of elements that the SortedList<TKey,TValue> can hold before resizing. Gdy elementy są dodawane do SortedList<TKey,TValue> , pojemność jest automatycznie zwiększana zgodnie z wymaganiami przez ponowną alokację tablicy wewnętrznej.As elements are added to a SortedList<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Jeśli rozmiar kolekcji można oszacować, określenie początkowej pojemności eliminuje konieczność wykonywania wielu operacji zmiany rozmiaru podczas dodawania elementów do SortedList<TKey,TValue> .If the size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the SortedList<TKey,TValue>.

Wydajność można zmniejszyć przez wywołanie TrimExcess lub przez ustawienie Capacity właściwości jawnie.The capacity can be decreased by calling TrimExcess or by setting the Capacity property explicitly. Zmniejszenie pojemności powoduje ponowną alokację pamięci i skopiowanie wszystkich elementów w SortedList<TKey,TValue> .Decreasing the capacity reallocates memory and copies all the elements in the SortedList<TKey,TValue>.

Ten konstruktor używa domyślnej usługi porównującej dla TKey .This constructor uses the default comparer for TKey. Aby określić moduł porównujący, należy użyć SortedList<TKey,TValue>(Int32, IComparer<TKey>) konstruktora.To specify a comparer, use the SortedList<TKey,TValue>(Int32, IComparer<TKey>) constructor. Domyślne ustawienia porównujące Comparer<T>.Default sprawdzają, czy typ klucza TKey implementuje System.IComparable<T> i używa tej implementacji, jeśli jest dostępny.The default comparer Comparer<T>.Default checks whether the key type TKey implements System.IComparable<T> and uses that implementation, if available. Jeśli nie, Comparer<T>.Default sprawdza, czy typ klucza TKey implementuje System.IComparable .If not, Comparer<T>.Default checks whether the key type TKey implements System.IComparable. Jeśli typ klucza nie TKey implementuje żadnego interfejsu, można określić System.Collections.Generic.IComparer<T> implementację w przeciążenie konstruktora, który akceptuje comparer parametr.If the key type TKey does not implement either interface, you can specify a System.Collections.Generic.IComparer<T> implementation in a constructor overload that accepts a comparer parameter.

Ten konstruktor jest n operacją o (), gdzie n is capacity .This constructor is an O(n) operation, where n is capacity.

Zobacz też

Dotyczy

SortedList<TKey,TValue>(IDictionary<TKey,TValue>, IComparer<TKey>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która zawiera elementy skopiowane z określonego IDictionary<TKey,TValue> , ma wystarczającą pojemność, aby pomieścić liczbę skopiowanych elementów i używa określonego IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that contains elements copied from the specified IDictionary<TKey,TValue>, has sufficient capacity to accommodate the number of elements copied, and uses the specified IComparer<T>.

public:
 SortedList(System::Collections::Generic::IDictionary<TKey, TValue> ^ dictionary, System::Collections::Generic::IComparer<TKey> ^ comparer);
public SortedList (System.Collections.Generic.IDictionary<TKey,TValue> dictionary, System.Collections.Generic.IComparer<TKey> comparer);
public SortedList (System.Collections.Generic.IDictionary<TKey,TValue> dictionary, System.Collections.Generic.IComparer<TKey>? comparer);
new System.Collections.Generic.SortedList<'Key, 'Value> : System.Collections.Generic.IDictionary<'Key, 'Value> * System.Collections.Generic.IComparer<'Key> -> System.Collections.Generic.SortedList<'Key, 'Value>
Public Sub New (dictionary As IDictionary(Of TKey, TValue), comparer As IComparer(Of TKey))

Parametry

dictionary
IDictionary<TKey,TValue>

IDictionary<TKey,TValue>Elementów, których elementy są kopiowane do nowego SortedList<TKey,TValue> .The IDictionary<TKey,TValue> whose elements are copied to the new SortedList<TKey,TValue>.

comparer
IComparer<TKey>

IComparer<T>Implementacja do użycia podczas porównywania kluczy.The IComparer<T> implementation to use when comparing keys.

-lub--or- null , aby użyć wartości domyślnej Comparer<T> dla typu klucza.null to use the default Comparer<T> for the type of the key.

Wyjątki

dictionary to null.dictionary is null.

dictionary zawiera co najmniej jeden zduplikowany klucz.dictionary contains one or more duplicate keys.

Przykłady

Poniższy przykład kodu pokazuje, jak używać SortedList<TKey,TValue> do tworzenia posortowanej bez uwzględniania wielkości liter podczas sortowania informacji w przypadku Dictionary<TKey,TValue> , przekazując Dictionary<TKey,TValue> do SortedList<TKey,TValue>(IDictionary<TKey,TValue>, IComparer<TKey>) konstruktora.The following code example shows how to use SortedList<TKey,TValue> to create a case-insensitive sorted copy of the information in a case-insensitive Dictionary<TKey,TValue>, by passing the Dictionary<TKey,TValue> to the SortedList<TKey,TValue>(IDictionary<TKey,TValue>, IComparer<TKey>) constructor. W tym przykładzie, porównujące bez uwzględniania wielkości liter są dla bieżącej kultury.In this example, the case-insensitive comparers are for the current culture.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create a new Dictionary of strings, with string keys and
        // a case-insensitive equality comparer for the current
        // culture.
        Dictionary<string, string> openWith =
            new Dictionary<string, string>
                (StringComparer.CurrentCultureIgnoreCase);

        // Add some elements to the dictionary.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("Bmp", "paint.exe");
        openWith.Add("DIB", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // Create a SortedList of strings with string keys and a
        // case-insensitive equality comparer for the current culture,
        // and initialize it with the contents of the Dictionary.
        SortedList<string, string> copy =
            new SortedList<string, string>(openWith,
                StringComparer.CurrentCultureIgnoreCase);

        // List the sorted contents of the copy.
        Console.WriteLine();
        foreach( KeyValuePair<string, string> kvp in copy )
        {
            Console.WriteLine("Key = {0}, Value = {1}", kvp.Key,
                kvp.Value);
        }
    }
}

/* This code example produces the following output:

Key = Bmp, Value = paint.exe
Key = DIB, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
 */
Imports System.Collections.Generic

Public Class Example
    
    Public Shared Sub Main() 

        ' Create a new Dictionary of strings, with string keys and
        ' a case-insensitive equality comparer for the current 
        ' culture.
        Dim openWith As New Dictionary(Of String, String)( _
            StringComparer.CurrentCultureIgnoreCase)
        
        ' Add some elements to the dictionary. 
        openWith.Add("txt", "notepad.exe")
        openWith.Add("Bmp", "paint.exe")
        openWith.Add("DIB", "paint.exe")
        openWith.Add("rtf", "wordpad.exe")
        
        ' Create a SortedList of strings with string keys and a 
        ' case-insensitive equality comparer for the current culture,
        ' and initialize it with the contents of the Dictionary.
        Dim copy As New SortedList(Of String, String)(openWith, _
            StringComparer.CurrentCultureIgnoreCase)

        ' List the sorted contents of the copy.
        Console.WriteLine()
        For Each kvp As KeyValuePair(Of String, String) In copy
            Console.WriteLine("Key = {0}, Value = {1}", _
                kvp.Key, kvp.Value)
        Next kvp

    End Sub

End Class

' This code example produces the following output:
'
'Key = Bmp, Value = paint.exe
'Key = DIB, Value = paint.exe
'Key = rtf, Value = wordpad.exe
'Key = txt, Value = notepad.exe

Uwagi

Każdy klucz w a SortedList<TKey,TValue> musi być unikatowy zgodnie z określoną regułą porównującą; podobnie, każdy klucz w źródle dictionary musi również być unikatowy zgodnie z określoną regułą porównującą.Every key in a SortedList<TKey,TValue> must be unique according to the specified comparer; likewise, every key in the source dictionary must also be unique according to the specified comparer.

Pojemność nowej SortedList<TKey,TValue> jest ustawiona na liczbę elementów w dictionary , więc nie ma potrzeby zmiany rozmiarów, gdy lista jest wypełniana.The capacity of the new SortedList<TKey,TValue> is set to the number of elements in dictionary, so no resizing takes place while the list is being populated.

Jeśli dane w dictionary są sortowane, ten konstruktor jest n operacją o (), gdzie n jest liczbą elementów w dictionary .If the data in dictionary are sorted, this constructor is an O(n) operation, where n is the number of elements in dictionary. W przeciwnym razie jest to operacja o ( n * n ).Otherwise it is an O(n*n) operation.

Zobacz też

Dotyczy

SortedList<TKey,TValue>(Int32, IComparer<TKey>)

Inicjuje nowe wystąpienie SortedList<TKey,TValue> klasy, która jest pusta, ma określoną pojemność początkową i używa określonego IComparer<T> .Initializes a new instance of the SortedList<TKey,TValue> class that is empty, has the specified initial capacity, and uses the specified IComparer<T>.

public:
 SortedList(int capacity, System::Collections::Generic::IComparer<TKey> ^ comparer);
public SortedList (int capacity, System.Collections.Generic.IComparer<TKey> comparer);
public SortedList (int capacity, System.Collections.Generic.IComparer<TKey>? comparer);
new System.Collections.Generic.SortedList<'Key, 'Value> : int * System.Collections.Generic.IComparer<'Key> -> System.Collections.Generic.SortedList<'Key, 'Value>
Public Sub New (capacity As Integer, comparer As IComparer(Of TKey))

Parametry

capacity
Int32

Początkowa liczba elementów, które SortedList<TKey,TValue> może zawierać.The initial number of elements that the SortedList<TKey,TValue> can contain.

comparer
IComparer<TKey>

IComparer<T>Implementacja do użycia podczas porównywania kluczy.The IComparer<T> implementation to use when comparing keys.

-lub--or- null , aby użyć wartości domyślnej Comparer<T> dla typu klucza.null to use the default Comparer<T> for the type of the key.

Wyjątki

Parametr capacity ma wartość niższą niż zero.capacity is less than zero.

Przykłady

Poniższy przykład kodu tworzy posortowaną listę z początkową pojemnością 5 i niezależną od wielkości liter dla bieżącej kultury.The following code example creates a sorted list with an initial capacity of 5 and a case-insensitive comparer for the current culture. Przykład dodaje cztery elementy, niektóre z kluczami małych liter i niektóre z kluczami wielkich liter.The example adds four elements, some with lower-case keys and some with upper-case keys. Przykład próbuje dodać element z kluczem, który różni się od istniejącego klucza tylko w przypadku, przechwytuje wyjątek, a następnie wyświetla komunikat o błędzie.The example then attempts to add an element with a key that differs from an existing key only by case, catches the resulting exception, and displays an error message. Na koniec przykład wyświetla elementy w kolejności sortowania bez uwzględniania wielkości liter.Finally, the example displays the elements in case-insensitive sort order.

using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create a new sorted list of strings, with string keys, an
        // initial capacity of 5, and a case-insensitive comparer.
        SortedList<string, string> openWith =
                      new SortedList<string, string>(5,
                          StringComparer.CurrentCultureIgnoreCase);

        // Add 4 elements to the list.
        openWith.Add("txt", "notepad.exe");
        openWith.Add("bmp", "paint.exe");
        openWith.Add("DIB", "paint.exe");
        openWith.Add("rtf", "wordpad.exe");

        // Try to add a fifth element with a key that is the same
        // except for case; this would be allowed with the default
        // comparer.
        try
        {
            openWith.Add("BMP", "paint.exe");
        }
        catch (ArgumentException)
        {
            Console.WriteLine("\nBMP is already in the sorted list.");
        }

        // List the contents of the sorted list.
        Console.WriteLine();
        foreach( KeyValuePair<string, string> kvp in openWith )
        {
            Console.WriteLine("Key = {0}, Value = {1}", kvp.Key,
                kvp.Value);
        }
    }
}

/* This code example produces the following output:

BMP is already in the sorted list.

Key = bmp, Value = paint.exe
Key = DIB, Value = paint.exe
Key = rtf, Value = wordpad.exe
Key = txt, Value = notepad.exe
 */
Imports System.Collections.Generic

Public Class Example
    
    Public Shared Sub Main() 

        ' Create a new sorted list of strings, with string keys, an
        ' initial capacity of 5, and a case-insensitive comparer.
        Dim openWith As New SortedList(Of String, String)(5, _
            StringComparer.CurrentCultureIgnoreCase)
        
        ' Add 4 elements to the list. 
        openWith.Add("txt", "notepad.exe")
        openWith.Add("bmp", "paint.exe")
        openWith.Add("DIB", "paint.exe")
        openWith.Add("rtf", "wordpad.exe")

        ' Try to add a fifth element with a key that is the same 
        ' except for case; this would be allowed with the default
        ' comparer.
        Try
            openWith.Add("BMP", "paint.exe")
        Catch ex As ArgumentException
            Console.WriteLine(vbLf & "BMP is already in the sorted list.")
        End Try
        
        ' List the contents of the sorted list.
        Console.WriteLine()
        For Each kvp As KeyValuePair(Of String, String) In openWith
            Console.WriteLine("Key = {0}, Value = {1}", _
                kvp.Key, kvp.Value)
        Next kvp

    End Sub

End Class

' This code example produces the following output:
'
'BMP is already in the sorted list.
'
'Key = bmp, Value = paint.exe
'Key = DIB, Value = paint.exe
'Key = rtf, Value = wordpad.exe
'Key = txt, Value = notepad.exe

Uwagi

Każdy klucz w a SortedList<TKey,TValue> musi być unikatowy zgodnie z określoną regułą porównującą.Every key in a SortedList<TKey,TValue> must be unique according to the specified comparer.

Pojemność programu SortedList<TKey,TValue> to liczba elementów, które SortedList<TKey,TValue> mogą być przechowywane przed zmianą rozmiarów.The capacity of a SortedList<TKey,TValue> is the number of elements that the SortedList<TKey,TValue> can hold before resizing. Gdy elementy są dodawane do SortedList<TKey,TValue> , pojemność jest automatycznie zwiększana zgodnie z wymaganiami przez ponowną alokację tablicy wewnętrznej.As elements are added to a SortedList<TKey,TValue>, the capacity is automatically increased as required by reallocating the internal array.

Jeśli rozmiar kolekcji można oszacować, określenie początkowej pojemności eliminuje konieczność wykonywania wielu operacji zmiany rozmiaru podczas dodawania elementów do SortedList<TKey,TValue> .If the size of the collection can be estimated, specifying the initial capacity eliminates the need to perform a number of resizing operations while adding elements to the SortedList<TKey,TValue>.

Wydajność można zmniejszyć przez wywołanie TrimExcess lub przez ustawienie Capacity właściwości jawnie.The capacity can be decreased by calling TrimExcess or by setting the Capacity property explicitly. Zmniejszenie pojemności powoduje ponowną alokację pamięci i skopiowanie wszystkich elementów w SortedList<TKey,TValue> .Decreasing the capacity reallocates memory and copies all the elements in the SortedList<TKey,TValue>.

Ten konstruktor jest n operacją o (), gdzie n is capacity .This constructor is an O(n) operation, where n is capacity.

Zobacz też

Dotyczy