Implementación de SortedDictionary en C#

En C#, SortedDictionary es una colección genérica que se utiliza para almacenar los pares clave/valor en forma ordenada y la clasificación se realiza en la clave. SortedDictionary se define en el espacio de nombres System.Collection.Generic . Es de naturaleza dinámica, lo que significa que el tamaño del diccionario ordenado crece según la necesidad.

Puntos importantes:

  • La clase SortedDictionary implementa el
    • ICollection<KeyValuePair<TKey, TValue>> Interfaz
    • Interfaz IDictionary<TKey, TValue>
    • Interfaz IEnumerable<KeyValuePair<TKey, TValue>>
    • Interfaz IEnumerable<T>
    • IReadOnlyCollection<KeyValuePair<TKey, TValue>> Interfaz
    • Interfaz IReadOnlyDictionary<TKey, TValue>
    • Interfaz ICollection
    • Interfaz de IDiccionario
    • Interfaz IEnumerable
  • En SortedDictionary, la clave debe ser única. No se permiten llaves duplicadas.
  • En SortedDictionary, las claves son inmutables y no pueden ser nulas.
  • En SortedDictionary, el valor puede ser nulo cuando el tipo del valor es de tipo de referencia.
  • Proporciona operaciones de inserción y eliminación más rápidas para datos no clasificados.
  • En SortedDictionary, solo puede almacenar los mismos tipos de pares clave/valor.
  • La capacidad de un SortedDictionary es el número de pares clave/valor que SortedDictionary puede contener.
  • Ordena en orden ascendente.

¿Cómo crear un diccionario ordenado?

Una clase SortedDictionary tiene 4 constructores que se utilizan para crear un SortedDictionary y los constructores son los siguientes:

  • SortedDictionary<TKey, TValue>(): este constructor se usa para crear una instancia de la clase SortedDictionary que está vacía y usa la implementación predeterminada de IComparer para el tipo de clave.
  • SortedDictionary<TKey, TValue>(IComparer): este constructor se usa para crear una instancia de la clase SortedDictionary que está vacía y usa la implementación de IComparer especificada para comparar claves.
  • SortedDictionary<TKey, TValue>(IDictionary): este constructor se usa para crear una instancia de la clase SortedDictionary que contiene elementos copiados del IDictionary especificado y usa la implementación predeterminada de IComparer para el tipo de clave.
  • SortedDictionary<TKey, TValue>(IDictionary, IComparer): este constructor se usa para crear una instancia de la clase SortedDictionary que contiene elementos copiados del IDictionary especificado y usa la implementación de IComparer especificada para comparar claves.

Veamos cómo crear un SortedDictionary usando el constructor SortedDictionary<TKey, TValue>() :

Paso 1: Incluya el espacio de nombres System.Collection.Generics en su programa con la ayuda del uso de palabras clave.

using System.Collection.Generics;

Paso 2: Cree un SortedDictionary usando la clase SortedDictionary<TKey, TValue> como se muestra a continuación:

SortedDictionary<Tipo_de_clave, Tipo_de_valor> sorteddictionary_name = new SortedDictionary<Tipo_de_clave, Tipo_de_valor>();

Paso 3: si desea agregar elementos en su SortedDictionary, use el método Add() para agregar pares clave/valor en su SortedDictionary. Y también puede agregar un par clave/valor en SortedDictionary usando Collection Initializer.

Paso 4: se accede al par clave/valor de SortedDictionary mediante un bucle foreach , un valor de índice o un bucle for.

Ejemplo:

// C# program to illustrate how 
// to create sorted dictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating sorted dictionary
        // Using SortedDictionary class
        SortedDictionary<int, string> My_sdict = 
            new SortedDictionary<int, string>();
  
        // Adding key/value pair in Sorted 
        // Dictionary Using Add() method
        My_sdict.Add(004, "Ask.com");
        My_sdict.Add(003, "Yahoo");
        My_sdict.Add(001, "Google");
        My_sdict.Add(005, "AOL.com");
        My_sdict.Add(002, "Bing");
        Console.WriteLine("Top Search Engines:");
  
        // Accessing the key/value pair of the 
        // SortedDictionary Using foreach loop
        foreach(KeyValuePair<int, string> pair in My_sdict)
        {
            Console.WriteLine("Rank: {0} and Name: {1}",
                                  pair.Key, pair.Value);
        }
  
        // Creating another sorted dictionary
        // using SortedDictionary<TKey, TValue> class
        // adding key/value pairs
        // Using collection initializer
        SortedDictionary<int, string> My_sdict1 = 
              new SortedDictionary<int, string>() {
                                     {1, "Python"},
                                      {5, "Swift"},
                                 {2, "JavaScript"},
                                        {4, "Go" },
                                      {3, "Rust"}};
  
          
        Console.WriteLine("Top Programming Language in 2019: ");
  
        // Accessing the key/value pair of the 
        // SortedDictionary Using foreach loop
        foreach(KeyValuePair<int, string> pair in My_sdict1)
        {
            Console.WriteLine("Rank:{0} and Name: {1}",
                                 pair.Key, pair.Value);
        }
    }
}
Producción:

Top Search Engines:
Rank: 1 and Name: Google
Rank: 2 and Name: Bing
Rank: 3 and Name: Yahoo
Rank: 4 and Name: Ask.com
Rank: 5 and Name: AOL.com
Top Programming Language in 2019: 
Rank:1 and Name: Python
Rank:2 and Name: JavaScript
Rank:3 and Name: Rust
Rank:4 and Name: Go
Rank:5 and Name: Swift

¿Cómo eliminar elementos del SortedDictionary?

En SortedDictionary, se permite eliminar elementos de SortedDictionary. La clase SortedDictionary<TKey, TValue> proporciona dos métodos diferentes para eliminar elementos y los métodos son:

  • Clear() : este método se usa para eliminar todos los elementos del SortedDictionary.
  • Remove(TKey) : este método se utiliza para eliminar el elemento con la clave especificada del SortedDictionary.

Ejemplo:

// C# program to illustrate how to
// Remove key/value pair from the 
// SortedDictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating sorted dictionary
        // Using SortedDictionary class
        SortedDictionary<int, string> My_sdict = 
             new SortedDictionary<int, string>();
  
        // Adding key/value pair in 
        // SortedDictionary Using 
        // the Add() method
        My_sdict.Add(001, "Google");
        My_sdict.Add(002, "Bing");
        My_sdict.Add(003, "Yahoo");
        My_sdict.Add(004, "Ask.com");
        My_sdict.Add(005, "AOL.com");
  
        // Initial number of key/value pairs
        Console.WriteLine("Key/Value pair: {0}",
                                My_sdict.Count);
  
        // After using Remove(TKey) method
        My_sdict.Remove(002);
        Console.WriteLine("Key/Value pair: {0}",
                                My_sdict.Count);
  
        // After using Clear() method
        My_sdict.Clear();
        Console.WriteLine("Key/Value pair: {0}",
                                My_sdict.Count);
    }
}
Producción:

Key/Value pair: 5
Key/Value pair: 4
Key/Value pair: 0

¿Cómo verificar la disponibilidad del par clave/valor en SortedDictionary?

En SortedDictionary, puede verificar si la clave o el valor dado está presente en el SortedDictionary especificado o no. La clase SortedDictionary<TKey, TValue> proporciona dos métodos diferentes para verificar y los métodos son:

  • Contiene clave (TKey) : este método se utiliza para determinar si SortedDictionary contiene un elemento con la clave especificada.
  • ContieneValor(TValor) : Este método se usa para determinar si SortedDictionary contiene un elemento con el valor especificado.

Ejemplo:

// C# program to illustrate how to
// check the given key/value pair 
// is exists or not in SortedDictionary
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating sorted dictionary
        // Using SortedDictionary class
        SortedDictionary<int, string> My_sdict =
             new SortedDictionary<int, string>();
  
        // Adding key/value pair 
        // in SortedDictionary
        // Using Add() method
        My_sdict.Add(001, "Google");
        My_sdict.Add(002, "Bing");
        My_sdict.Add(003, "Yahoo");
        My_sdict.Add(004, "Ask.com");
        My_sdict.Add(005, "AOL.com");
  
        // Using ContainsKey(TKey) method
        if (My_sdict.ContainsKey(004) == true) 
        {
            Console.WriteLine("Key Found..");
        }
        else
        {
            Console.WriteLine("Key Not Found..");
        }
  
        // Using ContainsValue(TValue) method
        if (My_sdict.ContainsValue("Baidu") == true)
        {
            Console.WriteLine("Value Found..");
        }
  
        else 
        {
            Console.WriteLine("Value Not Found..");
        }
    }
}
Producción:

Key Found..
Value Not Found..

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *