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:
SortedListdomyś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ż
Dictionaryw 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.
- Szybkość wstawiania: Wolniejsza niż
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)()
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")
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"
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
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

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

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"}
}
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")

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




