Clasificación del diccionario
Referencia MSDN:
La clase genérica SortedDictionary representa una colección de pares clave/valor ordenados por llave.
Parámetros de tipo
El tipo de clave en el diccionario TKey.
El tipo de valores en el diccionario TValue.
La clase genérica SortedDictionary es un árbol de búsqueda binario con una complejidad de operación de recuperación de O(log n), donde n es el número de elementos en el diccionario. En este sentido, es similar a la clase genérica SortedList. Ambas clases tienen modelos de objetos similares y ambas tienen una complejidad de recuperación O(log n). La diferencia entre estas dos clases es el uso de la memoria y la velocidad de inserción y eliminación de elementos:
SortedList usa menos memoria que SortedDictionary.
foreach (par clave-valor ltint, cadena gt kvp en mi diccionario) {...}
La declaración foreach envuelve el enumerador y solo permite leerlo Obtiene la colección, pero no permite escribir en la colección.
Ejemplos de uso:
Usar el sistema;
Usar el sistema. recolectar. Genéricos;
Ejemplo de clase pública
{
Public static void Main()
{
/ / Cree un nuevo diccionario de cadenas con claves de cadenas.
//
Diccionario ltstring, string gt método de apertura =
Nuevo diccionario ltstring, string gt();
//A Añade algunos elementos al diccionario. No
//Claves duplicadas, pero algunos valores están duplicados.
openWith. add("txt","notepad.exe");
openWith. add("BMP","paint.exe");
openWith. add("DIB","paint.exe");
openWith. add("rtf", "wordpad.exe");
//El método Add generará una excepción si la nueva clave
//ya está en el diccionario.
Pruebe
{
openWith. add("txt", "winword.exe");
}
catch (excepción de argumento)
{
Consola . WriteLine("Ya existe un elemento con Key="txt".");
}
La propiedad Item es otro nombre para el indexador, por lo que
//Puedes omitir el nombre al acceder a un elemento.
Consola. WriteLine("For key="rtf", value = {0}.",
abrir con【"rtf"]);
//El indexador se puede utilizar para cambiar el Valor asociado
//Con clave.
abrir con【"rtf"】="winword .exe";
Consola. WriteLine("For key="rtf", value = {0}.",
abrir con【"rtf"]);
//Si la clave no existe, establecer indexador para esta clave
//Agrega un nuevo par clave/valor.
abrir con【"doc"】="winword .exe";
//Si la clave solicitada es, el indexador generará una excepción
/ / No en el diccionario.
Pruebe
{
Consola. WriteLine("For key="TIF", valor = {0}).,
abrir con【"TIF"]);
}
catch (KeyNotFoundException)
{
Consola no encontrada para WriteLine("Key="TIF"));
}
// Cuando un programa a menudo tiene que probar claves con resultados fallidos
//En un diccionario, TryGetValue puede ser una forma más eficiente
//de recuperar valores.
String value="";
if(abrir con. try getvalue("TIF", valor de salida))
{
Consola. WriteLine("For key="TIF", valor = {0})., valor);
}
Otro
{
Console.WriteLine("Key="TIF")) no encontrada;
}
// ContieneKey se puede utilizar para probar la clave antes de insertarla
//Ellos.
if(!openWith.contains key("ht")
{
openWith.add("ht", "hypertrm.exe");
Console. WriteLine("incrementar valor para clave = "ht": { 0 }",
abrir con【"ht"]); /p>
//Cuando se utiliza foreach para enumerar elementos del diccionario,
//Los elementos se recuperan como objetos KeyValuePair
Console /p>
foreach(key. par de valores ltstring, cadena gtkvp en openWith)
{
WriteLine("Clave = { 0 }, Valor = {1} ",
kvp . key, kvp. value);
}
//Para obtener los valores individualmente, use el atributo de valores.
Diccionario ltstring, string gt. value collection value collection =
openWith. valores;
Los elementos de ValueCollection están fuertemente tipados
//Con El tipo especificado por el valor del diccionario.
Console. WriteLine();
foreach(cadena s en valor coll)
{
Console.WriteLine("Valor). = { 0 }", s);
}
// Para obtener las claves individualmente, use el atributo claves.
Diccionario ltstring, string gt. KeyCollection keyColl =
openWith key;
Los elementos de KeyCollection están fuertemente tipados
// Tiene un diccionario El tipo especificado por la clave
.Consola.
WriteLine();
foreach(String s en key coll)
{
Consola. WriteLine("Key = { 0 }", s);
}
//Utilice el método Remove para eliminar el par clave/valor.
Consola. WriteLine("\nremove(\"doc\")");
openWith. remove("doc");
if(!openWith.contains key("doc")
{
Console.WriteLine("Palabra clave no encontrada " doc"));
}
}
}
/*Este ejemplo de código produce el siguiente resultado:
} p>
El elemento con Key="txt" ya existe
Para key="rtf", valor = wordpad.exe
Para key=. "rtf", Valor = winword.exe.
Clave="TIF" no encontrada
Clave="ht" no encontrada: Valor agregado de hypertrm.exe. >
Clave=txt, Valor=notepad.exe
Clave=bmp, Valor=paint.exe
Clave=dib, valor=paint.exe
clave=rtf,valor=winword.exe
palabra clave=documento,valor=winword.exe
clave=ht,valor = hypertrm.exe
valor=notepad.exe
valor=paint.exe
valor=paint.exe
valor=winword .exe
Valor = winword.exe
Valor = hypertrm.exe
Clave = txt
Clave = bmp
Clave = dib
Clave = rtf
Clave = doc
Clave = ht
Eliminar("doc")
Palabra clave "doc" no encontrado
*/