跳至頁尾內容
開發者更新

C# SortedList(開發者完整指南)

C# SortedList 介紹

什麼是 SortedList?

C# SortedList 類別是一種鍵值對的集合,類似於字典,但其具有透過鍵自動排序的額外優勢。 它是 System.Collections.Generic 命名空間的一部分,專為需要快速存取已排序資料的情境而設計。 SortedList<TKey, TValue> 在您需要特定順序維持資料並透過鍵高效存取元素時非常理想。

在處理SortedLists和PDF生成任務時,IronPDF非常適合與此類別整合,提供增強的PDF生成控制。

主要特點與使用案例

  • 鍵值對儲存:類似於字典,SortedList將資料儲存為鍵值對。
  • 自動排序:SortedList 預設按照鍵升序保持關聯值的排序。
  • 高效資料檢索:按鍵快速檢索關聯值,使其適合用於查找。
  • 使用案例:適用於需要已排序資料的應用程式,例如果管理有序的名稱、日期或數值列表。

SortedList 的工作原理

資料結構概覽

公開類別 SortedList 是陣列和哈希表之間的混合體,將其項目按鍵組織。 內部使用排序陣列保持鍵值的順序,以確保按鍵的高效查找。 不過,插入和刪除操作比 Dictionary 慢。

排序機制

預設情況下,SortedList<TKey, TValue> 使用 IComparable 介面以升序排序鍵,確保字串鍵和其他型別實現預設比較行為。 如果需要自定排序順序,可以提供自定比較器。

優勢和限制

  • 優點:
    • 快速鍵存取:提供快速的O(log n)按鍵存取。
    • 排序順序:資料自動以鍵排序,無需額外的排序開銷。
  • 缺點:
    • 插入速度:Dictionary 插入時較慢,特別是在大資料量的情況下。
    • 非鍵操作的有限效率:在資料不是主要根據具體鍵值存取的情境中效率較低。

使用 C# SortedList

建立 SortedList

您可以在C#中使用預設構造函式建立 SortedList ,或者在需要自定排序時傳遞 IComparerSortedList 的預設初始容量為16,當約略大小已知時可進行調整以提高性能。

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

新增項目

using Add 方法將鍵值對新增到 SortedList 中。 這會使項目按鍵排序。 以下程式碼保持 SortedList 資料按鍵升序排列。

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

存取和修改元素

按鍵存取 SortedList 中的元素。 您可以直接檢索或修改與鍵相關的值。

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

刪除項目

using Remove 方法按特定鍵刪除項目,或使用 RemoveAt 指定的索引。 這兩者都允許從 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

迭代 SortedList

using foreach 迴圈遍歷 SortedList ,以排序順序檢索鍵和值。

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

C# Sorted List (開發者如何工作):圖1

使用 SortedList 的實用範例

  • 範例1:以簡單的鍵值格式儲存和檢索資料,其中順序重要,例如學生姓名按學號。
  • 範例2:在更複雜的場景中使用 SortedList ,例如顯示排序的交易日誌或排名分數。

最佳實踐:

  • 當鍵是主要存取點且需要保持排序時,使用 SortedList
  • 對於頻繁插入,考慮使用 SortedDictionary 以獲得更好的性能。

效能考量

將 SortedList 與 Dictionary 和 List 比較

  • SortedList vs. Dictionary:由於排序開銷,SortedList 插入速度比 Dictionary 慢。
  • SortedList vs. List:與列表不同,SortedList 設計用於按鍵存取元素並維持排序順序。

何時使用 SortedList:當您需要已排序資料並主要按鍵存取時,特別是對於讀取密集情形。

與 IronPDF 整合以導出 PDF

IronPDF介紹

C# Sorted List (開發者如何工作):圖2

IronPDF 是一個強大的程式庫,用於在 C# 中生成和修改 PDF 檔案。 它允許開發人員從各種來源建立 PDF,程式化地新增內容,以及自定義 PDF 版面。 在本節中,我們將使用 IronPDF 從 SortedList 資料建立 PDF 報告。

從 SortedList 資料生成 PDF 報告

要開始使用 IronPDF,請安裝 IronPDF NuGet 套件:

Install-Package IronPdf

範例:將 SortedList 的資料導出到 PDF

以下範例演示如何將資料從 SortedList 導出到 PDF 表格。

首先,設置您的 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

然後,使用 IronPDF 生成此資料的 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
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

C# Sorted List (開發者如何工作):圖3

此程式碼從 SortedList 資料建立 HTML 表格,並使用 IronPDF 將其轉換為 PDF。

進階功能

  • 自定義 PDF 版面:IronPDF 允許用 CSS 樣式設定版面、字體、顏色等。
  • 頁眉和頁腳:IronPDF 支援頁眉和頁腳,其中可以包含頁碼或商標。

總結和最佳實踐

  • SortedList 概覽:SortedList 是一個已排序的鍵值集合,最適合於資料按特定鍵存取並需保持排序的情境。
  • 使用 IronPDF 導出:IronPDF 是一個便捷的庫,用於將 SortedList 資料導出為 PDF,支援自定義版面和樣式。

結論

在本文中,我們探討了 C# SortedList 類別,這是一個管理已排序鍵值資料集合的強大工具。 SortedList 特別適用於順序和按鍵高效存取至關重要的場景中。 從建立、新增和刪除元素到與 IronPDF 整合以導出 PDF,我們涵蓋了在現實應用中使用 SortedList 的實際步驟和最佳實踐。

此外,我們展示了如何使用 IronPDF 簡化從 SortedList 將指定值導出為PDF格式的任務,從而使專業化的、有條理的報告建立更加容易。 IronPDF 的多功能性,包括自定義的頁眉、頁腳和 CSS 樣式,使其成為阿直接從 C# 應用程式生成 PDF 的絕佳選擇。

如果您有興趣嘗試 IronPDF,它提供一個免費試用,允許您不承諾地探索其完整功能範圍。 此試用版允許測試 PDF 生成、定制選項和現有項目的整合,以確保其能滿足您的需求。 通過結合 SortedList 和 IronPDF,開發人員獲得了一個管理和報告 C# 應用程式中已排序資料的強大高效解決方案。

常見問題

什麼是 C# SortedList 及其工作原理?

C# SortedList 是一種自動排序鍵的鍵值對集合。它是 System.Collections.Generic 命名空間的一部分,適合需要排序資料存取的情景。SortedList 使用一種介於陣列和雜湊表之間的混合結構,提供高效的鍵基礎存取。

如何在 C# 中建立 SortedList?

您可以使用預設構造函式或傳入 IComparer 來自定義排序,在 C# 中建立 SortedList。建立 SortedList 的範例如下:SortedList sortedList = new SortedList();

using SortedList 優於在 C# 中使用字典的優勢是什麼?

using SortedList 優於字典的主要優勢在於 SortedList 自動排序鍵,這在您需要有序資料並主要通過鍵存取時非常有利。這在讀取密集的場景中特別有用。

如何向 C# SortedList 新增項目?

可以使用 Add 方法將項目新增到 C# SortedList。此方法確保項目按鍵保持有序,維持 SortedList 的順序。

SortedList 可以用來導出資料為 PDF 嗎?

是的,您可以使用 IronPDF 生成 SortedList 資料的 PDF 報告。這允許開發人員從排序的鍵值資料集合建立 PDF 文件,展示 IronPDF 與 C# 應用程式的整合能力。

C# SortedList 的一些常見應用是什麼?

C# SortedList 的常見應用包括儲存有序列表如按學號的學生姓名或維護排序的交易日誌。尤其適用於需要排序資料存取的應用程式中。

在插入和刪除操作方面,SortedList 的效能如何?

SortedList 相較於字典,在處理插入和刪除操作時可能較慢,尤其是對大資料量時。這是因為它的混合結構優先考慮高效查詢和維持排序。

C# SortedList 的預設鍵排序順序是什麼?

C# SortedList 的預設排序順序為升序。它使用 IComparable 介面自動排序鍵,除非提供了自定義的 IComparer。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話