跳至頁尾內容
.NET 幫助

C# 排序清單(開發者如何實現)

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

建立排序列表

在 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>();
$vbLabelText   $csharpLabel

添加商品

使用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");
$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"
$vbLabelText   $csharpLabel

移除物品

使用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
$vbLabelText   $csharpLabel

遍歷已排序列表

使用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}");
}
$vbLabelText   $csharpLabel

C# 排序清單(開發者如何理解其工作原理):圖 1

SortedList 的實際應用範例

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

最佳實踐:

  • 當鍵是主要存取點並且需要保持排序時,請使用SortedList
  • 對於頻繁插入的情況,可以考慮使用SortedDictionary等替代方案以獲得更好的效能。

性能考量

比較 SortedList、Dictionary 和 List

  • SortedList 與 Dictionary:由於排序開銷,SortedList 的插入速度比 Dictionary 慢。
  • SortedList 與 List 的差異:與清單不同,SortedList 旨在透過鍵存取元素並保持排序順序。

何時使用 SortedList:當您需要排序資料並且主要透過鍵存取資料時,尤其是在讀取密集型場景中,可以使用 SortedList。

與 IronPDF 整合以實現 PDF 匯出

IronPDF簡介

C# 排序清單(開發者如何理解其工作原理):圖 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" }
};
$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");
$vbLabelText   $csharpLabel

C# 排序清單(開發者如何理解其工作原理):圖 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 是什麼?它是如何運作的?

AC# SortedList 是一個鍵值對集合,它會自動對鍵進行排序。它是 System.Collections.Generic 命名空間的一部分,適用於需要按順序存取資料的場景。 SortedList 使用陣列和雜湊表的混合結構來維護其順序,從而提供高效的基於鍵的存取。

如何在C#中建立SortedList?

在 C# 中,您可以使用預設建構子建立 SortedList,也可以傳遞 IComparer 介面進行自訂排序。以下是建立 SortedList 的範例: SortedListsortedList = new SortedList();

在 C# 中,使用 SortedList 而不是 Dictionary 有哪些優點?

使用 SortedList 而非 Dictionary 的主要優點在於,SortedList 會自動對鍵進行排序,這在需要排序資料且主要透過鍵存取資料時非常有用。這在讀取密集型場景中尤其有用。

如何為 C# SortedList 新增項目?

可以使用Add方法為 C# SortedList 新增項目。此方法可確保項目保持按鍵排序,從而維護 SortedList 的順序。

SortedList 能否用於將資料匯出為 PDF?

是的,您可以使用 IronPDF 從 SortedList 資料產生 PDF 報告。這使得開發人員能夠從排序後的鍵值對資料集建立 PDF 文檔,充分展現了 IronPDF 與 C# 應用程式的整合能力。

C# SortedList 有哪些常見應用程式?

C# SortedList 的常見應用程式包括儲存有序清單(例如按學號排列的學生姓名)或維護排序的交易日誌。它在需要按排序順序存取資料的應用程式中尤其有用。

SortedList 在插入和刪除操作方面表現如何?

對於插入和刪除操作,SortedList 的速度可能比 Dictionary 慢,尤其是在處理大型資料時。這是因為它採用了混合結構,既注重高效的查找,又兼顧排序的維護。

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

C# SortedList 的預設排序方式為升序。它使用 IComparable 介面自動對鍵進行排序,除非提供了自訂的 IComparable 介面。

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

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。