
SortedList en C# | Lista ordenada de pares clave-valor
Introducción a C# SortedList
¿Qué es una SortedList?
La clase C# SortedList es una colección de pares clave-valor, similar a un diccionario, pero tiene el beneficio adicional de ordenar automáticamente por claves. Es parte del espacio de nombres System.Collections.Generic y está diseñada para escenarios donde se necesita un acceso rápido a datos ordenados. SortedList<TKey, TValue> es ideal cuando se necesita mantener datos en un orden particular y acceder a los elementos de manera eficiente por clave.
Al trabajar con SortedLists junto con tareas de generación de PDF, IronPDF se integra perfectamente con esta clase, proporcionando un control mejorado sobre la generación de PDF.
Características principales y casos de uso
- Almacenamiento de pares clave-valor: como un diccionario, SortedList almacena datos como pares clave-valor.
- Ordenación Automática:
SortedListmantiene los valores asociados ordenados por clave en orden ascendente por defecto. - Recuperación de datos eficiente: la recuperación rápida de valores asociados por clave lo hace adecuado para búsquedas.
- Casos de uso: útil para aplicaciones que necesitan datos ordenados, como administrar listas ordenadas de nombres, fechas o valores numéricos.
Cómo funciona SortedList
Resumen de la estructura de datos
La clase pública SortedList es un híbrido entre un arreglo y una tabla hash y organiza sus elementos por clave. Internamente, usa un array ordenado para mantener las claves en orden, asegurando búsquedas eficientes por clave. Sin embargo, las operaciones de inserción y eliminación pueden ser más lentas que en un Dictionary.
Mecanismo de clasificación
Por defecto, SortedList<TKey, TValue> ordena las claves en orden ascendente usando la interfaz IComparable, que asegura que las claves de cadena y otros tipos implementen un comportamiento de comparación por defecto. Si se necesita un ordenamiento personalizado, se puede proporcionar un comparador personalizado.
Ventajas y limitaciones
- Ventajas:
- Acceso rápido a teclas: proporciona acceso rápido a O(log n) mediante tecla.
- Orden de clasificación: los datos se ordenan automáticamente por clave sin sobrecarga de clasificación adicional.
- Contras:
- Velocidad de Inserción: Más lenta que
Dictionarypara inserciones, especialmente con grandes tamaños de datos. - Eficiencia limitada para operaciones no clave: menos eficiente en escenarios donde el acceso a los datos no se realiza principalmente mediante valores clave específicos.
- Velocidad de Inserción: Más lenta que
Trabajando con C# SortedList
Creación de una SortedList
Se puede crear un SortedList en C# usando ya sea el constructor por defecto o pasando un IComparer si se necesita un ordenamiento personalizado. El SortedList tiene una capacidad inicial por defecto de 16, la cual se puede ajustar para mejorar el rendimiento cuando se conoce el tamaño aproximado.
// Create a SortedList with integer keys and string values
SortedList<int, string> sortedList = new SortedList<int, string>();' Create a SortedList with integer keys and string values
Dim sortedList As New SortedList(Of Integer, String)()Añadir elementos
Agrega pares clave-valor al SortedList usando el método Add. Ordena elementos por clave. El siguiente código mantiene los datos de SortedList en orden ascendente de claves.
sortedList.Add(1, "Apple");
sortedList.Add(3, "Banana");
sortedList.Add(2, "Cherry");sortedList.Add(1, "Apple")
sortedList.Add(3, "Banana")
sortedList.Add(2, "Cherry")Acceso y modificación de elementos
Accede a elementos en un SortedList por sus claves. Puedes recuperar o modificar los valores asociados a las claves directamente.
// Accessing a specific value by key
string value = sortedList[1]; // Retrieves "Apple"
// Modifying a value
sortedList[1] = "Avocado"; // Changes the value associated with key 1 to "Avocado"' Accessing a specific value by key
Dim value As String = sortedList(1) ' Retrieves "Apple"
' Modifying a value
sortedList(1) = "Avocado" ' Changes the value associated with key 1 to "Avocado"Eliminación de elementos
Elimina elementos usando claves específicas con el método Remove o usando el índice especificado con RemoveAt. Ambos permiten la eliminación controlada de objetos del SortedList.
sortedList.Remove(3); // Removes the entry with key 3
sortedList.RemoveAt(0); // Removes the entry at the zero-based index 0sortedList.Remove(3) ' Removes the entry with key 3
sortedList.RemoveAt(0) ' Removes the entry at the zero-based index 0Iterar sobre una SortedList
Iterar sobre SortedList usando un bucle foreach para recuperar tanto claves como valores en orden.
foreach (KeyValuePair<int, string> kvp in sortedList)
{
Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}For Each kvp As KeyValuePair(Of Integer, String) In sortedList
Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}")
Next kvp
Ejemplos prácticos del uso de SortedList
- Ejemplo 1: Almacenar y recuperar datos en un formato clave-valor simple donde el orden importa, como los nombres de los estudiantes por sus números de lista.
- Ejemplo 2: Usando
SortedListen escenarios más complejos, como mostrar registros de transacciones ordenados o puntuaciones clasificadas.
Bestes prácticas:
- Usa
SortedListcuando las claves son el punto de acceso principal y necesitan permanecer ordenadas. - Para inserciones frecuentes, considera alternativas como
SortedDictionarypara un mejor rendimiento.
Consideraciones sobre el rendimiento
Comparación de SortedList con Dictionary y List
- SortedList vs. Dictionary: SortedList es más lento para las inserciones en comparación con Dictionary debido a la sobrecarga de clasificación.
- SortedList vs. Lista: a diferencia de una lista, SortedList está diseñado para acceder a elementos por clave y mantener el orden ordenado.
Cuándo usar SortedList: Úselo cuando necesite datos ordenados y acceder a ellos principalmente por clave, especialmente para escenarios de lectura intensiva.
Integración con IronPDF para la exportación de PDF
Introducción a IronPDF

IronPDF es una potente biblioteca para generar y modificar archivos PDF en C#. Permite a los desarrolladores crear PDFs desde varias fuentes, añadir contenido programáticamente, y personalizar diseños de PDF. En esta sección, usaremos IronPDF para crear un informe en PDF a partir de datos de SortedList.
Generación de informes PDF a partir de datos de SortedList
Para comenzar a usar IronPDF, instala el paquete NuGet de IronPDF:
Ejemplo: Exportación de datos de una SortedList a un PDF
El siguiente ejemplo demuestra cómo exportar datos de un SortedList a una tabla PDF.
Primero, configura tu SortedList:
SortedList<int, string> sortedList = new SortedList<int, string>
{
{ 1, "Apple" },
{ 2, "Banana" },
{ 3, "Cherry" }
};Dim sortedList As New SortedList(Of Integer, String) From {
{1, "Apple"},
{2, "Banana"},
{3, "Cherry"}
}A continuación, usa IronPDF para generar un PDF a partir de estos datos:
// Initialize a PDF renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Build HTML string with table format
string html = "<h1>Sorted List Data</h1><table border='1'><tr><th>Key</th><th>Value</th></tr>";
foreach (var kvp in sortedList)
{
html += $"<tr><td>{kvp.Key}</td><td>{kvp.Value}</td></tr>";
}
html += "</table>";
// Render HTML to PDF and save it
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("sortedList.pdf");' Initialize a PDF renderer
Dim renderer As New ChromePdfRenderer()
' Build HTML string with table format
Dim html As String = "<h1>Sorted List Data</h1><table border='1'><tr><th>Key</th><th>Value</th></tr>"
For Each kvp In sortedList
html &= $"<tr><td>{kvp.Key}</td><td>{kvp.Value}</td></tr>"
Next kvp
html &= "</table>"
' Render HTML to PDF and save it
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("sortedList.pdf")
Este código crea una tabla HTML a partir de los datos de SortedList y lo convierte en un PDF usando IronPDF.
Características avanzadas
- Personalización del diseño de PDF: IronPDF permite aplicar estilos CSS a diseños, fuentes, colores, etc.
- Encabezados y pies de página: IronPDF admite encabezados y pies de página, que pueden incluir números de página o logotipos.
Resumen y buenas prácticas
- Descripción general de SortedList: SortedList es una colección de valores clave ordenados, ideal para escenarios en los que se accede a los datos mediante claves específicas y estos deben permanecer ordenados.
- Uso de IronPDF para exportar: IronPDF es una biblioteca conveniente para exportar datos de SortedList a archivos PDF, que admite diseños y estilos personalizados.
Conclusión
En este artículo, exploramos la clase C# SortedList, una herramienta poderosa para gestionar colecciones de datos ordenados por clave-valor. SortedList es especialmente útil en escenarios donde el orden y el acceso eficiente por clave son críticos. Desde la creación, adición y eliminación de elementos hasta la integración con IronPDF para la exportación a PDF, cubrimos pasos prácticos y mejores prácticas para usar SortedList en aplicaciones del mundo real.
Además, mostramos cómo IronPDF puede simplificar la tarea de exportar valores especificados de un SortedList al formato PDF, permitiendo la creación fácil de informes profesionales y bien organizados. La versatilidad de IronPDF, que incluye encabezados, pies de página y estilizado CSS personalizables, lo convierte en una excelente elección para generar PDFs directamente desde tus aplicaciones C#.
Si estás interesado en probar IronPDF, ofrece una prueba gratuita que te permite explorar su gama completa de funciones sin compromiso. Esta prueba permite probar la generación de PDF, opciones de personalización e integración en proyectos existentes para asegurar que cumple con tus necesidades. Al combinar SortedList e IronPDF, los desarrolladores obtienen una solución robusta y eficiente para gestionar y reportar datos ordenados en aplicaciones C#.

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.
Artículos Relacionados


