Diferencia entre SortedList y SortedDictionary en C#

En C#, SortedList es una colección de pares clave/valor que se ordenan según las claves. De forma predeterminada, esta colección ordena los pares clave/valor en orden ascendente. Es de tipo genérico y no genérico de colección. La SortedList genérica se define en el espacio de nombres System.Collections.Generic , mientras que la SortedList no genérica se define en el espacio de nombres System.Collections .

Ejemplo:

// C# program to illustrate how
// to create a sortedlist
using System;
using System.Collections;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating a sortedlist
        // Using SortedList class
        SortedList my_Slist = new SortedList();
  
        // Adding key/value pairs in
        // SortedList using Add() method
        my_Slist.Add(1.02, "Dog");
        my_Slist.Add(1.07, "Cat");
        my_Slist.Add(1.04, "Rat");
        my_Slist.Add(1.01, "Bird");
  
        foreach(DictionaryEntry pair in my_Slist)
        {
            Console.WriteLine("{0} and {1}",
                      pair.Key, pair.Value);
        }
        Console.WriteLine();
    }
}
Producción:

1.01 and Bird
1.02 and Dog
1.04 and Rat
1.07 and Cat

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.

Ejemplo:

// C# program to illustrate how
// to create a 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, "Roscosmos");
        My_sdict.Add(003, "ESA");
        My_sdict.Add(001, "NASA");
        My_sdict.Add(005, "ISRO");
        My_sdict.Add(002, "CNSA");
        Console.WriteLine("Top 5 space agencies 2018:");
  
        // 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);
        }
    }
}
Producción:

Top 5 space agencies 2018:
Rank: 1 and Name: NASA
Rank: 2 and Name: CNSA
Rank: 3 and Name: ESA
Rank: 4 and Name: Roscosmos
Rank: 5 and Name: ISRO

A continuación se muestran algunas diferencias entre SortedList y SortedDictionary:

ListaOrdenada OrdenadoDiccionario
La memoria de SortedList es una sobrecarga. La memoria de SortedDictionary no tiene cuellos de botella.
En SortedList, los elementos se almacenan en un bloque continuo en la memoria. En SortedDictionary, los elementos se almacenan en objetos separados que pueden distribuirse por todo el montón.
En SoterdList, la fragmentación de la memoria es alta. En SoterdDictionary, la fragmentación de la memoria es baja.
Requiere menos memoria para el almacenamiento. Requiere más memoria para el almacenamiento.
En SortedList, se requieren menos operaciones de inserción y eliminación. En SortedDictionary, se requieren más operaciones de inserción y eliminación.
En SortedList, puede acceder a los elementos usando el índice. En SortedDictionary, puede acceder a los elementos mediante el índice o la clave. Aquí el acceso clave es suficiente, no hay necesidad de acceder a los elementos usando el índice.
En SortedList, los datos ya están ordenados. En SortedDictionary, los datos están en forma no ordenada.

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 *