Przejdź do treści stopki
POMOC .NET

C# Posortowana lista (Jak to działa dla deweloperów)

Wprowadzenie do C# SortedList

Czym jest SortedList?

Klasa C# SortedList jest zbiorem par klucz-wartość, podobnym do słownika, ale ma dodatkową zaletę w postaci automatycznego sortowania według kluczy. Jest to część przestrzeni nazw System.Collections.Generic i jest przeznaczona do scenariuszy, w których potrzebny jest szybki dostęp do posortowanych danych. SortedList<TKey, TValue> jest idealnym rozwiązaniem, gdy trzeba zachować dane w określonej kolejności i efektywnie uzyskiwać dostęp do elementów za pomocą klucza.

Podczas pracy z klasą SortedLists w połączeniu z zadaniami generowania plików PDF, IronPDF doskonale integruje się z tą klasą, zapewniając lepszą kontrolę nad generowaniem plików PDF.

Kluczowe funkcje i przykłady zastosowań

  • Przechowywanie par klucz-wartość: Podobnie jak słownik, SortedList przechowuje dane w postaci par klucz-wartość.
  • Sortowanie automatyczne: SortedList domyślnie sortuje powiązane wartości według klucza w porządku rosnącym.
  • Efektywne pobieranie danych: Szybkie pobieranie powiązanych wartości na podstawie klucza sprawia, że nadaje się do wyszukiwania.
  • Przykłady zastosowań: Przydatne w aplikacjach wymagających posortowanych danych, takich jak zarządzanie uporządkowanymi listami nazwisk, dat lub wartości liczbowych.

Jak działa SortedList

Przegląd struktur danych

Klasa publiczna SortedList jest hybrydą tablicy i tablicy hashowej i porządkuje swoje elementy według klucza. Wewnętrznie wykorzystuje posortowaną tablicę do utrzymania porządku wartości kluczy, zapewniając wydajne wyszukiwanie według klucza. Jednak operacje wstawiania i usuwania mogą przebiegać wolniej niż w Dictionary.

Mechanizm sortowania

Domyślnie SortedList<TKey, TValue> sortuje klucze w porządku rosnącym przy użyciu interfejsu IComparable, co zapewnia, że klucze typu string i inne typy realizują domyślne zachowanie porównawcze. Jeśli potrzebna jest niestandardowa kolejność sortowania, można dostarczyć niestandardowy moduł porównawczy.

Zalety i ograniczenia

  • Zalety:
    • Szybki dostęp według klucza: Zapewnia szybki dostęp O(log n) według klucza.
    • Sortowanie: Dane są automatycznie sortowane według klucza bez dodatkowego obciążenia związanego z sortowaniem.
  • Wady:
    • Szybkość wstawiania: Wolniejsza niż Dictionary w przypadku wstawiania, zwłaszcza przy dużych rozmiarach danych.
    • Ograniczona wydajność w przypadku operacji nieopartych na kluczach: Mniejsza wydajność w sytuacjach, w których dostęp do danych nie odbywa się głównie za pomocą określonych wartości kluczy.

Praca z C# SortedList

Tworzenie listy posortowanej

Można utworzyć SortedList w języku C#, używając konstruktora domyślnego lub przekazując IComparer, jeśli potrzebne jest niestandardowe sortowanie. SortedList ma domyślną pojemność początkową wynoszącą 16, którą można dostosować w celu poprawy wydajności, gdy znany jest przybliżony rozmiar.

// 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

Dodawanie elementów

Dodaj pary klucz-wartość do SortedList przy użyciu metody Add. Dzięki temu elementy są posortowane według klucza. Poniższy kod utrzymuje dane SortedList w porządku rosnącym według kluczy.

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

Dostęp do elementów i ich modyfikacja

Uzyskaj dostęp do elementów w SortedList za pomocą ich kluczy. Można bezpośrednio pobierać lub modyfikować wartości powiązane z kluczami.

// 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

Usuwanie elementów

Usuń elementy przy użyciu określonych kluczy za pomocą metody Remove lub przy użyciu określonego indeksu za pomocą RemoveAt. Oba pozwalają na kontrolowane usuwanie obiektów z 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

Iteracja nad listą posortowaną

Przejrzyj SortedList za pomocą pętli foreach, aby pobrać zarówno klucze, jak i wartości w uporządkowanej kolejności.

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 posortowana w języku C# (jak to działa dla programistów): Rysunek 1

Praktyczne przykłady wykorzystania SortedList

  • Przykład 1: Przechowywanie i pobieranie danych w prostym formacie klucz-wartość, w którym kolejność ma znaczenie, np. nazwiska uczniów według numerów z listy.
  • Przykład 2: Wykorzystanie SortedList w bardziej złożonych scenariuszach, takich jak wyświetlanie posortowanych dzienników transakcji lub rankingów wyników.

Najlepsze praktyki:

  • Użyj SortedList, gdy klucze są głównym punktem dostępu i muszą pozostać posortowane.
  • W przypadku częstych wstawek warto rozważyć alternatywne rozwiązania, takie jak SortedDictionary, aby uzyskać lepszą wydajność.

Kwestie związane z wydajnością

Porównanie SortedList z Dictionary i List

  • SortedList a Dictionary: SortedList działa wolniej przy wstawianiu danych w porównaniu z Dictionary ze względu na obciążenie związane z sortowaniem.
  • SortedList a List: W przeciwieństwie do listy, SortedList jest zaprojektowana do uzyskiwania dostępu do elementów za pomocą klucza i zachowania uporządkowanej kolejności.

Kiedy używać SortedList: Używaj jej, gdy potrzebujesz posortowanych danych i uzyskujesz do nich dostęp głównie za pomocą klucza, zwłaszcza w scenariuszach wymagających intensywnego odczytu.

Integracja z IronPDF w celu eksportu do formatu PDF

Wprowadzenie do IronPDF

Lista posortowana w języku C# (jak to działa dla programistów): Rysunek 2

IronPDF to potężna biblioteka do generowania i modyfikowania plików PDF w języku C#. Pozwala to programistom tworzyć pliki PDF z różnych źródeł, dodawać treści programowo oraz dostosowywać układy plików PDF. W tej sekcji użyjemy IronPDF do utworzenia raportu PDF na podstawie danych z SortedList.

Generowanie raportów PDF na podstawie danych z SortedList

Aby rozpocząć korzystanie z IronPDF, zainstaluj pakiet IronPDF NuGet:

Install-Package IronPdf

Przykład: Eksportowanie danych z SortedList do pliku PDF

Poniższy przykład pokazuje, jak wyeksportować dane z SortedList do tabeli w formacie PDF.

Najpierw skonfiguruj 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

Następnie użyj IronPDF do wygenerowania pliku PDF na podstawie tych danych:

// 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 posortowana w języku C# (jak to działa dla programistów): Rysunek 3

Ten kod tworzy tabelę HTML na podstawie danych z SortedList i konwertuje ją do formatu PDF przy użyciu IronPDF.

Zaawansowane funkcje

  • Dostosowywanie układu plików PDF: IronPDF umożliwia stosowanie stylów CSS do układów, czcionek, kolorów itp.
  • Nagłówki i stopki: IronPDF obsługuje nagłówki i stopki, które mogą zawierać numery stron lub logo.

Podsumowanie i najlepsze praktyki

  • Omówienie SortedList: SortedList to posortowana kolekcja par klucz-wartość, najlepiej sprawdzająca się w sytuacjach, w których dostęp do danych odbywa się za pomocą określonych kluczy i dane muszą pozostać posortowane.
  • Wykorzystanie IronPDF do eksportu: IronPDF to wygodna biblioteka do eksportowania danych z SortedList do plików PDF, obsługująca niestandardowe układy i style.

Wnioski

W tym artykule omówiliśmy klasę C# SortedList, potężne narzędzie do zarządzania posortowanymi zbiorami danych typu klucz-wartość. SortedList jest szczególnie przydatny w sytuacjach, w których kluczowe znaczenie ma porządek i sprawny dostęp według klucza. Od tworzenia, dodawania i usuwania elementów po integrację z IronPDF w celu eksportu do formatu PDF — omówiliśmy praktyczne kroki i najlepsze praktyki dotyczące korzystania z SortedList w rzeczywistych zastosowaniach.

Ponadto pokazaliśmy, w jaki sposób IronPDF może uprościć eksport określonych wartości z SortedList do formatu PDF, umożliwiając łatwe tworzenie profesjonalnych, dobrze zorganizowanych raportów. Wszechstronność IronPDF, w tym możliwość dostosowywania nagłówków, stopek i stylów CSS, sprawia, że jest to doskonały wybór do generowania plików PDF bezpośrednio z aplikacji C#.

Jeśli chcesz wypróbować IronPDF, możesz skorzystać z bezpłatnej wersji próbnej, która pozwala zapoznać się z pełnym zakresem funkcji bez żadnych zobowiązań. Ta wersja próbna umożliwia przetestowanie generowania plików PDF, opcji dostosowywania oraz integracji z istniejącymi projektami, aby upewnić się, że spełnia ona Państwa potrzeby. Dzięki połączeniu SortedList i IronPDF programiści zyskują solidne, wydajne rozwiązanie do zarządzania i raportowania posortowanych danych w aplikacjach C#.

Często Zadawane Pytania

Czym jest SortedList w C# i jak działa?

SortedList w C# to kolekcja par klucz-wartość, która automatycznie sortuje klucze. Jest częścią przestrzeni nazw System.Collections.Generic i jest użyteczna w scenariuszach, gdzie konieczny jest dostęp do posortowanych danych. SortedList utrzymuje porządek, używając hybrydowej struktury pomiędzy tablicą a tabelą mieszającą, zapewniając wydajny dostęp do kluczy.

Jak mogę stworzyć SortedList w C#?

Można stworzyć SortedList w C# używając domyślnego konstruktora lub przekazując IComparer dla niestandardowego sortowania. Przykładem stworzenia SortedList jest: SortedList sortedList = new SortedList();

Jakie są zalety korzystania z SortedList w porównaniu do Dictionary w C#?

Główną zaletą korzystania z SortedList w porównaniu do Dictionary jest to, że SortedList automatycznie sortuje klucze, co jest korzystne, gdy potrzebujesz posortowanych danych i głównie uzyskujesz do nich dostęp za pomocą klucza. Jest to szczególnie użyteczne w scenariuszach, w których odczyt danych jest bardziej dominujący.

Jak mogę dodawać elementy do SortedList w C#?

Elementy można dodawać do SortedList w C# za pomocą metody Add. Ta metoda zapewnia, że elementy pozostają posortowane według kluczy, utrzymując porządek w SortedList.

Czy SortedList może być używana do eksportowania danych jako PDF?

Tak, można użyć IronPDF do generowania raportów PDF z danych SortedList. Pozwala to programistom na tworzenie dokumentów PDF z kolekcji posortowanych danych klucz-wartość, pokazując możliwości integracji IronPDF z aplikacjami C#.

Jakie są najczęstsze zastosowania dla SortedList w C#?

Najczęstsze zastosowania SortedList w C# obejmują przechowywanie uporządkowanych list, takich jak nazwy studentów według numerów indeksów, czy utrzymywanie posortowanych dzienników transakcji. Jest to szczególnie przydatne w aplikacjach, gdzie dane muszą być dostępne w uporządkowanej formie.

Jak SortedList wypada pod względem operacji wstawiania i usuwania?

SortedList może być wolniejszy niż Dictionary w przypadku operacji wstawiania i usuwania, szczególnie przy dużych rozmiarach danych. Wynika to z jego hybrydowej struktury, która priorytetuje wydajne wyszukiwanie i utrzymanie uporządkowanego porządku.

Jaki jest domyślny porządek sortowania kluczy w SortedList w C#?

Domyślny porządek sortowania w SortedList w C# to rosnący. Używa interfejsu IComparable do automatycznego sortowania kluczy, chyba że zostanie dostarczony niestandardowy IComparer.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie