Ir para o conteúdo do rodapé
AJUDA DO .NET

Listas ordenadas em C# (Como funciona para desenvolvedores)

Introdução à lista ordenada em C

O que é uma lista ordenada?

A classe C# SortedList é uma coleção de pares chave-valor, semelhante a um dicionário, mas com o benefício adicional de classificação automática por chaves. Faz parte do namespace System.Collections.Generic e foi projetado para cenários em que você precisa de acesso rápido a dados classificados. SortedList<TKey, TValue> é ideal quando você precisa manter os dados em uma ordem específica e acessar os elementos de forma eficiente por chave.

Ao trabalhar com SortedLists em conjunto com tarefas de geração de PDF, o IronPDF se integra perfeitamente a essa classe, proporcionando maior controle sobre a geração de PDFs.

Principais funcionalidades e casos de uso

  • Armazenamento de pares chave-valor: Assim como um dicionário, o SortedList armazena dados como pares chave-valor.
  • Ordenação automática: SortedList mantém os valores associados ordenados por chave em ordem crescente por padrão.
  • Recuperação eficiente de dados: A recuperação rápida de valores associados por chave torna-a adequada para pesquisas.
  • Casos de uso: Útil para aplicações que necessitam de dados classificados, como o gerenciamento de listas ordenadas de nomes, datas ou valores numéricos.

Como funciona a lista ordenada (SortedList)

Visão geral da estrutura de dados

A classe pública SortedList é um híbrido entre um array e uma tabela hash e organiza seus itens por chave. Internamente, utiliza um array ordenado para manter os valores das chaves em ordem, garantindo buscas eficientes por chave. No entanto, as operações de inserção e exclusão podem ser mais lentas do que em um Dictionary.

Mecanismo de classificação

Por padrão, SortedList<TKey, TValue> classifica as chaves em ordem crescente usando a interface IComparable, que garante que as chaves de string e outros tipos implementem um comportamento de comparação padrão. Caso seja necessária uma ordem de classificação personalizada, um comparador personalizado pode ser fornecido.

Vantagens e limitações

  • Prós:
    • Acesso rápido por chave: Fornece acesso rápido O(log n) por chave.
    • Ordem de classificação: Os dados são classificados automaticamente por chave, sem sobrecarga adicional de classificação.
  • Contras:
    • Velocidade de inserção: Mais lenta que Dictionary para inserções, especialmente com grandes volumes de dados.
    • Eficiência limitada para operações não essenciais: Menos eficiente em cenários onde os dados não são acessados ​​principalmente por valores de chave específicos.

Trabalhando com SortedList em C

Criando uma lista ordenada

Você pode criar um SortedList em C# usando o construtor padrão ou passando um IComparer se for necessária uma classificação personalizada. O SortedList tem uma capacidade inicial padrão de 16, que pode ser ajustada para melhorias de desempenho quando o tamanho aproximado for conhecido.

// 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>();
' Create a SortedList with integer keys and string values
Dim sortedList As New SortedList(Of Integer, String)()
$vbLabelText   $csharpLabel

Adicionando itens

Adicione pares chave-valor ao SortedList usando o método Add. Isso mantém os itens classificados por chave. O código a seguir mantém os dados da SortedList em ordem crescente de chaves.

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

Acessando e Modificando Elementos

Acesse elementos em um SortedList por suas chaves. Você pode recuperar ou modificar diretamente os valores associados às chaves.

// 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"
' 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"
$vbLabelText   $csharpLabel

Removendo itens

Remova itens usando chaves específicas com o método Remove ou usando o índice especificado com RemoveAt. Ambos permitem a exclusão controlada de objetos do 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
sortedList.Remove(3) ' Removes the entry with key 3
sortedList.RemoveAt(0) ' Removes the entry at the zero-based index 0
$vbLabelText   $csharpLabel

Iterando sobre uma lista ordenada

Itere sobre SortedList usando um loop foreach para recuperar chaves e valores em ordem classificada.

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 em C# (Como funciona para desenvolvedores): Figura 1

Exemplos práticos de utilização de listas ordenadas

  • Exemplo 1: Armazenar e recuperar dados em um formato simples de chave-valor onde a ordem é importante, como nomes de alunos por seus números de matrícula.
  • Exemplo 2: Usando SortedList em cenários mais complexos, como exibir registros de transações classificados ou pontuações classificadas.

Melhores práticas:

  • Use SortedList quando as chaves forem o ponto de acesso principal e precisarem permanecer classificadas.
  • Para inserções frequentes, considere alternativas como SortedDictionary para melhor desempenho.

Considerações sobre o desempenho

Comparando SortedList com Dictionary e List

  • SortedList vs. Dictionary: SortedList é mais lento para inserções em comparação com Dictionary devido à sobrecarga de ordenação.
  • SortedList vs. List: Ao contrário de uma lista, o SortedList foi projetado para acessar elementos por chave e manter a ordem classificada.

Quando usar SortedList: Use-o quando precisar de dados ordenados e acessá-los principalmente por chave, especialmente em cenários com grande volume de leituras.

Integração com o IronPDF para exportação de PDFs

Introdução ao IronPDF

Lista ordenada em C# (Como funciona para desenvolvedores): Figura 2

IronPDF é uma biblioteca poderosa para gerar e modificar arquivos PDF em C#. Permite aos desenvolvedores criar PDFs a partir de diversas fontes, adicionar conteúdo programaticamente e personalizar layouts de PDF. Nesta seção, usaremos o IronPDF para criar um relatório em PDF a partir de dados de uma lista ordenada.

Geração de relatórios em PDF a partir de dados de listas ordenadas

Para começar a usar o IronPDF , instale o pacote NuGet do IronPDF :

Install-Package IronPdf

Exemplo: Exportando dados de uma lista ordenada para um PDF

O exemplo a seguir demonstra como exportar dados de uma SortedList para uma tabela em PDF.

Primeiro, configure seu 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

Em seguida, use o IronPDF para gerar um PDF a partir desses dados:

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

Lista ordenada em C# (Como funciona para desenvolvedores): Figura 3

Este código cria uma tabela HTML a partir dos dados da SortedList e a converte em um PDF usando o IronPDF.

Recursos avançados

  • Personalização do layout do PDF: O IronPDF permite estilização CSS para layouts, fontes, cores, etc.
  • Cabeçalhos e rodapés: O IronPDF suporta cabeçalhos e rodapés, que podem incluir números de página ou logotipos.

Resumo e Melhores Práticas

  • Visão geral do SortedList: SortedList é uma coleção ordenada de chave-valor, ideal para cenários em que os dados são acessados ​​por chaves específicas e precisam permanecer ordenados.
  • Usando o IronPDF para Exportar: O IronPDF é uma biblioteca prática para exportar dados de SortedList para PDFs, com suporte a layouts e estilos personalizados.

Conclusão

Neste artigo, exploramos a classe C# SortedList, uma ferramenta poderosa para gerenciar coleções de dados ordenadas por chave-valor. SortedList é especialmente útil em cenários onde a ordem e o acesso eficiente por chave são críticos. Desde a criação, adição e remoção de elementos até a integração com o IronPDF para exportação em PDF, abordamos etapas práticas e melhores práticas para usar o SortedList em aplicações do mundo real.

Além disso, mostramos como o IronPDF pode simplificar a tarefa de exportar valores específicos de um arquivo SortedList para o formato PDF, permitindo a criação fácil de relatórios profissionais e bem organizados. A versatilidade do IronPDF, incluindo cabeçalhos, rodapés e estilos CSS personalizáveis, o torna uma excelente opção para gerar PDFs diretamente de seus aplicativos C#.

Se você estiver interessado em experimentar o IronPDF, ele oferece um período de teste gratuito que permite explorar todos os seus recursos sem compromisso. Esta versão de avaliação permite testar a geração de PDFs, as opções de personalização e a integração em projetos existentes para garantir que atenda às suas necessidades. Ao combinar SortedList e IronPDF, os desenvolvedores obtêm uma solução robusta e eficiente para gerenciar e gerar relatórios de dados classificados em aplicativos C#.

Perguntas frequentes

O que é uma SortedList em C# e como ela funciona?

A SortedList do AC# é uma coleção de pares chave-valor que ordena automaticamente as chaves. Ela faz parte do namespace System.Collections.Generic e é útil em cenários onde o acesso a dados ordenados é necessário. A SortedList mantém sua ordem usando uma estrutura híbrida entre um array e uma tabela hash, proporcionando acesso eficiente baseado em chaves.

Como posso criar uma SortedList em C#?

Você pode criar um SortedList em C# usando o construtor padrão ou passando um IComparer para ordenação personalizada. Um exemplo de criação de um SortedList é: SortedList sortedList = new SortedList ();

Quais são as vantagens de usar uma SortedList em vez de um Dictionary em C#?

A principal vantagem de usar um SortedList em vez de um Dictionary é que o SortedList ordena automaticamente as chaves, o que é benéfico quando você precisa de dados ordenados e acessa-os principalmente por chave. Isso é particularmente útil em cenários com grande volume de leituras.

Como posso adicionar itens a uma SortedList em C#?

É possível adicionar itens a uma SortedList em C# usando o método Add . Esse método garante que os itens permaneçam ordenados por chave, mantendo a ordem da SortedList.

É possível usar uma SortedList para exportar dados como um PDF?

Sim, você pode usar o IronPDF para gerar relatórios em PDF a partir de dados de listas ordenadas. Isso permite que os desenvolvedores criem documentos PDF a partir de coleções de dados ordenados por chave-valor, demonstrando os recursos de integração do IronPDF com aplicativos C#.

Quais são algumas aplicações comuns de uma SortedList em C#?

Aplicações comuns de um SortedList em C# incluem armazenar listas ordenadas, como nomes de alunos por número de matrícula, ou manter registros de transações ordenados. É especialmente útil em aplicações onde os dados precisam ser acessados em ordem classificada.

Qual o desempenho de uma SortedList em termos de operações de inserção e remoção?

Uma SortedList pode ser mais lenta que um Dictionary para operações de inserção e remoção, principalmente com grandes volumes de dados. Isso se deve à sua estrutura híbrida, que prioriza buscas eficientes e a manutenção da ordem de classificação.

Qual é a ordem de classificação padrão das chaves em um SortedList em C#?

A ordem de classificação padrão em um SortedList do C# é crescente. Ele usa a interface IComparable para classificar as chaves automaticamente, a menos que um IComparer personalizado seja fornecido.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim