AYUDA .NET

Lista ordenada en C# (Cómo funciona para desarrolladores)

Introducción a C# SortedList

¿Qué es un SortedList?

La clase SortedList en C# es una colección de pares clave-valor, similar a un diccionario, pero con el beneficio adicional de ordenar automáticamente por claves. Forma parte del espacio de nombres System.Collections.Generic y está diseñado para situaciones en las que necesitas un acceso rápido a datos ordenados. SortedList TKey, TValue es ideal cuando necesitas mantener los datos en un orden particular y acceder a los elementos por clave de manera eficiente.

Cuando se trata de trabajar con SortedLists junto con tareas de generación de PDF, IronPDF se integra perfectamente con esta clase, brindándole aún más control sobre la generación de PDF.

Características Clave y Casos de Uso

  • Almacenamiento de pares clave-valor: Al igual que un diccionario, SortedList almacena datos como pares clave-valor.
  • Ordenamiento Automático: SortedList mantiene los valores asociados ordenados por clave, en orden ascendente de forma predeterminada.
  • Recuperación de Datos Eficiente: La rápida recuperación de valores asociados por clave lo hace adecuado para búsquedas.
  • Casos de Uso: SortedList es útil para aplicaciones que necesitan datos ordenados, como la gestión de listas ordenadas de nombres, fechas o valores numéricos.

Cómo funciona SortedList

Descripción 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, utiliza un array ordenado para mantener los valores clave en orden, lo que significa que, aunque las búsquedas por clave son eficientes, las operaciones de inserción y eliminación pueden ser más lentas que en un Diccionario.

Mecanismo de ordenamiento

De forma predeterminada, SortedList TKey, TValue ordena las claves en orden ascendente utilizando la interfaz IComparable, lo que garantiza que las claves de cadena y otros tipos implementen un comportamiento de comparación predeterminado. Si se necesita un orden de clasificación personalizado, se puede proporcionar un comparador personalizado.

Ventajas y limitaciones

  • Ventajas:

    • Acceso Rápido por Clave: Ofrece acceso rápido O(log n) por clave.
    • Ordenado: Los datos se ordenan automáticamente por clave, por lo que no se necesita orden adicional.
  • Contras:

    • Velocidad de inserción: Más lenta que Dictionary para las inserciones, especialmente con datos grandes.
    • Eficiencia Limitada para Operaciones No Clave: Limitada en casos donde los datos no se acceden principalmente por valores clave específicos.

Trabajando con C# SortedList

Creando una SortedList

Para crear un SortedList en C#, puedes usar el constructor predeterminado o pasar un IComparer si necesitas un ordenamiento personalizado. SortedList tiene una capacidad inicial predeterminada de 16, pero si conoces el tamaño aproximado de antemano, esto se puede especificar para mejorar el rendimiento.

SortedList<int, string> sortedList = new SortedList<int, string>();
SortedList<int, string> sortedList = new SortedList<int, string>();
Dim sortedList As New SortedList(Of Integer, String)()
$vbLabelText   $csharpLabel

Añadir elementos

Puede añadir pares clave-valor a la SortedList utilizando el método Add, lo que mantendrá los elementos ordenados por clave. En el siguiente ejemplo de código, la SortedList se ordena por los valores de clave especificados, manteniendo automáticamente los datos en orden ascendente.

sortedList.Add(1, "Apple");
sortedList.Add(3, "Banana");
sortedList.Add(2, "Cherry");
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 utilizando sus claves. Puedes recuperar o modificar cualquier valor especificado asociado con claves directamente.

// Accessing a specific value by key
string value = sortedList[1];  // "Apple"
// Modifying a value
sortedList[1] = "Avocado";
// Accessing a specific value by key
string value = sortedList[1];  // "Apple"
// Modifying a value
sortedList[1] = "Avocado";
' Accessing a specific value by key
Dim value As String = sortedList(1) ' "Apple"
' Modifying a value
sortedList(1) = "Avocado"
$vbLabelText   $csharpLabel

Eliminando elementos

Puedes eliminar elementos utilizando las claves especificadas usando el método Remove o eliminarlos usando el índice especificado con RemoveAt. Ambas opciones permiten la eliminación controlada de los datos del objeto especificado en el SortedList.

sortedList.Remove(3);       // Removes key 3
sortedList.RemoveAt(0);     // Removes item at a zero-based index 0
sortedList.Remove(3);       // Removes key 3
sortedList.RemoveAt(0);     // Removes item at a zero-based index 0
sortedList.Remove(3) ' Removes key 3
sortedList.RemoveAt(0) ' Removes item at a zero-based index 0
$vbLabelText   $csharpLabel

Iterando sobre un SortedList

Puedes iterar sobre SortedList usando un bucle foreach, que recupera tanto las claves como los valores en orden clasificado.

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}");
}
For Each kvp As KeyValuePair(Of Integer, String) In sortedList
	Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}")
Next kvp
$vbLabelText   $csharpLabel

Lista Ordenada de C# (Cómo Funciona para Desarrolladores): Figura 1

Ejemplos prácticos de uso de SortedList

  • Ejemplo 1: Almacenar y recuperar datos en un formato simple de clave-valor donde el orden importa, como los nombres de los estudiantes por sus números de lista.
  • Ejemplo 2: Usar SortedList en escenarios más complejos, como mostrar registros de transacciones ordenados o puntuaciones clasificadas.

    Mejores Prácticas:

  • Utilice SortedList cuando las claves sean el punto de acceso principal y necesiten mantenerse ordenadas.
  • Para inserciones frecuentes, considere alternativas como SortedDictionary para un mejor rendimiento.

Consideraciones sobre el rendimiento

Comparación entre SortedList, Dictionary y List

  • SortedList vs. Dictionary: SortedList es más lento para las inserciones que Dictionary debido a su mecanismo de ordenación.
  • SortedList vs. List: A diferencia de una lista, SortedList está diseñado para acceder a elementos por clave y mantiene los elementos ordenados.

    Cuándo usar SortedList: Úselo cuando necesite datos ordenados y principalmente acceder a ellos mediante clave, especialmente para escenarios con mucho énfasis en la lectura.

Integración con IronPDF para exportar PDF

Introducción a IronPDF

Lista Ordenada en C# (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 archivos PDF a partir de diversas fuentes, añadir contenido de forma programática y personalizar los diseños de PDF. En esta sección, utilizaremos IronPDF para crear un informe PDF a partir de datos de SortedList.

Generación de informes PDF a partir de datos de SortedList

Para comenzar a usar IronPDF, instale el paquete NuGet de IronPDF:

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
$vbLabelText   $csharpLabel

Ejemplo: Exportar datos de un SortedList a un PDF

El siguiente ejemplo demuestra cómo exportar datos de un SortedList a una tabla PDF.

Primero, configure su 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" }
};
Dim sortedList As New SortedList(Of Integer, String) From {
	{1, "Apple"},
	{2, "Banana"},
	{3, "Cherry"}
}
$vbLabelText   $csharpLabel

A continuación, utiliza IronPDF para generar un PDF a partir de estos datos:

ChromePdfRenderer renderer = new ChromePdfRenderer();
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>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("sortedList.pdf");
ChromePdfRenderer renderer = new ChromePdfRenderer();
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>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("sortedList.pdf");
Dim renderer As New ChromePdfRenderer()
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>"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("sortedList.pdf")
$vbLabelText   $csharpLabel

Lista Ordenada de C# (Cómo Funciona para Desarrolladores): Figura 3

Este código crea una tabla HTML a partir de los datos de SortedList y la convierte en un PDF usando IronPDF.

Funciones avanzadas

  • Personalización del diseño de PDF: IronPDF permite el uso de estilos CSS para diseños, fuentes, colores, etc.
  • Encabezados y pies de página: IronPDF admite encabezados y pies de página, los cuales pueden incluir números de página o logotipos.

Resumen y Mejores Prácticas

  • Visión general de SortedList: SortedList es una colección ordenada de clave-valor, ideal para escenarios donde se accede a los datos mediante una clave específica y es necesario mantenerlos ordenados.
  • Using IronPDF for Exporting: IronPDF is a convenient library for exporting SortedList data to a PDF, supporting custom layouts and styling.

Conclusión

En este artículo, exploramos la clase SortedList de C#, una poderosa herramienta para gestionar colecciones de datos ordenados de 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 de 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 estilos CSS personalizables, lo convierte en una excelente opció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. Con esta prueba, puedes probar la generación de PDF, las opciones de personalización y la integración en tus proyectos existentes para asegurarte de que satisfaga 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#.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
C# Trim (Cómo funciona para desarrolladores)
SIGUIENTE >
C# Float (Cómo funciona para desarrolladores)