Saltar al pie de página
.NET AYUDA

C# Lista Ordenada (Cómo Funciona para Desarrolladores)

Introducción a SortedList en C

¿Qué es una SortedList?

La clase SortedList de C# es una colección de pares clave-valor, similar a un diccionario, pero tiene el beneficio adicional de ordenar automáticamente por claves. Forma parte del espacio de nombres System.Collections.Generic y está diseñado para escenarios donde necesitas acceso rápido a datos ordenados. SortedList<TKey, TValue> es ideal cuando necesitas 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: SortedList mantiene los valores asociados ordenados por clave en orden ascendente de forma predeterminada.
  • 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 array 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 lento que Dictionary para inserciones, especialmente con tamaños de datos grandes.
    • 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.

Trabajando con SortedList en C

Creación de una SortedList

Puedes crear un SortedList en C# usando el constructor por defecto o pasando un IComparer si se necesita un ordenamiento personalizado. El SortedList tiene una capacidad inicial por defecto de 16, que se puede ajustar para mejoras de 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
SortedList<int, string> sortedList = new SortedList<int, string>();
$vbLabelText   $csharpLabel

Añadir elementos

Añadir 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");
$vbLabelText   $csharpLabel

Acceso y modificación de elementos

Accede a los 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
string value = sortedList[1];  // Retrieves "Apple"
// Modifying a value
sortedList[1] = "Avocado";   // Changes the value associated with key 1 to "Avocado"
$vbLabelText   $csharpLabel

Eliminación de elementos

Eliminar elementos usando claves específicas con el método Remove o usando el índice especificado con RemoveAt. Ambos permiten una 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 0
sortedList.Remove(3);       // Removes the entry with key 3
sortedList.RemoveAt(0);     // Removes the entry at the zero-based index 0
$vbLabelText   $csharpLabel

Iterar sobre una SortedList

Itera sobre SortedList usando un bucle foreach para recuperar tanto claves como valores en orden ordenado.

foreach (KeyValuePair<int, string> kvp in sortedList)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
foreach (KeyValuePair<int, string> kvp in sortedList)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
$vbLabelText   $csharpLabel

C# Sorted List (Cómo Funciona para Desarrolladores): Figura 1

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: Uso SortedList en escenarios más complejos, como mostrar registros de transacciones ordenados o puntuaciones clasificadas.

Mejores prácticas:

  • Usa SortedList cuando las claves sean el punto de acceso principal y necesiten permanecer ordenadas.
  • Para inserciones frecuentes, considera alternativas como SortedDictionary para 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

C# Sorted List (Cómo Funciona para Desarrolladores): Figura 2

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:

Install-Package 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" }
};
SortedList<int, string> sortedList = new SortedList<int, string>
{
    { 1, "Apple" },
    { 2, "Banana" },
    { 3, "Cherry" }
};
$vbLabelText   $csharpLabel

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
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");
$vbLabelText   $csharpLabel

C# Sorted List (Cómo Funciona para Desarrolladores): Figura 3

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 SortedList de C#, una herramienta poderosa para gestionar colecciones de datos ordenadas por clave. SortedList es especialmente útil en escenarios donde el orden y el acceso eficiente por clave son críticos. Desde crear, añadir y remover elementos hasta integrar con IronPDF para exportar 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 específicos de un SortedList a formato PDF, permitiendo la fácil creación 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#.

Preguntas Frecuentes

¿Qué es un SortedList de C# y cómo funciona?

Un SortedList de C# es una colección de pares clave-valor que automáticamente ordena las claves. Es parte del espacio de nombres System.Collections.Generic y es útil para escenarios donde es necesario el acceso a datos ordenados. El SortedList mantiene su orden usando una estructura híbrida entre un array y una tabla hash, proporcionando un acceso eficiente basado en claves.

¿Cómo puedo crear un SortedList en C#?

Puedes crear un SortedList en C# usando el constructor predeterminado o pasando un IComparer para ordenamiento personalizado. Un ejemplo de crear un SortedList es: SortedListsortedList = new SortedList();

¿Cuáles son las ventajas de usar un SortedList sobre un Dictionary en C#?

La principal ventaja de usar un SortedList sobre un Dictionary es que un SortedList ordena automáticamente las claves, lo cual es beneficioso cuando necesitas datos ordenados y principalmente los accedes por clave. Esto es particularmente útil en escenarios de lectura intensiva.

¿Cómo puedo añadir elementos a un SortedList de C#?

Los elementos pueden añadirse a un SortedList de C# usando el método Add. Este método asegura que los elementos permanezcan ordenados por clave, manteniendo el orden del SortedList.

¿Se puede usar un SortedList para exportar datos como un PDF?

Sí, puedes usar IronPDF para generar informes en PDF a partir de datos de SortedList. Esto permite a los desarrolladores crear documentos PDF a partir de colecciones de datos clave-valor ordenados, mostrando las capacidades de integración de IronPDF con aplicaciones C#.

¿Cuáles son algunas aplicaciones comunes de un SortedList de C#?

Las aplicaciones comunes de un SortedList de C# incluyen almacenar listas ordenadas como nombres de estudiantes por número de registro o mantener registros de transacciones ordenados. Es especialmente útil en aplicaciones donde los datos necesitan ser accedidos en un orden ordenado.

¿Cómo se desempeña un SortedList en términos de operaciones de inserción y eliminación?

Un SortedList puede ser más lento que un Dictionary para operaciones de inserción y eliminación, particularmente con tamaños de datos grandes. Esto se debe a su estructura híbrida, que prioriza búsquedas eficientes y mantenimiento de orden ordenado.

¿Cuál es el orden de ordenamiento predeterminado de claves en un SortedList de C#?

El orden de ordenamiento predeterminado en un SortedList de C# es ascendente. Usa la interfaz IComparable para ordenar automáticamente las claves a menos que se proporcione un IComparer personalizado.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más