跳至页脚内容
.NET 帮助

C#排序列表(开发者用法)

C# SortedList 简介

什么是 SortedList?

C# SortedList 类是一个键值对集合,类似于字典,但它具有自动按键排序的额外优势。 它是 System.Collections.Generic 命名空间的一部分,专为需要快速访问排序数据的场景而设计。 SortedList<TKey, TValue> 非常适合在需要维持特定顺序并通过键高效访问元素的情况下使用。

当在 PDF 生成任务中与 SortedLists 一起使用时,IronPDF 完美地与此类集成,增强了对 PDF 生成的控制。

主要特点和用例

  • 键值对存储:像字典一样,SortedList 将数据存储为键值对。
  • 自动排序SortedList 默认按键升序保持相关值排序。
  • 高效的数据检索:通过键快速检索相关值使其适用于查找。
  • 使用案例:适用于需要排序数据的应用,例如管理姓名、日期或数值的有序列表。

SortedList 如何工作

数据结构概述

公共类 SortedList 是数组和哈希表的混合体,通过键组织其项目。 在内部,它使用排序数组来保持键值的顺序,确保通过键进行高效查找。 然而,插入和删除操作可能比 Dictionary 慢。

排序机制

默认情况下,SortedList<TKey, TValue> 使用 IComparable 接口将键按升序排序,这确保字符串键和其他类型实现默认比较行为。 如果需要自定义排序顺序,可以提供自定义比较器。

优势和限制

  • 优点
    • 快速键访问:通过键提供快速 O(log n) 访问。
    • 排序顺序:数据自动按键排序,无需额外的排序开销。
  • 缺点
    • 插入速度:对于插入操作,比 Dictionary 慢,尤其是在大数据尺寸的情况下。
    • 非键操作的效率有限:在数据不主要通过特定键值访问的场景下效率较低。

使用 C# SortedList

创建 SortedList

您可以使用默认的构造函数或在需要自定义排序时传递 IComparer 来在 C# 中创建 SortedListSortedList 的默认初始容量为 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

添加项目

使用 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

删除项目

使用特定键的 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

使用 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 与 Dictionary:由于排序开销,与 Dictionary 相比,SortedList 的插入速度较慢。
  • SortedList 与 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();

在 C# 中使用 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 的默认排序顺序是升序。除非提供了自定义的 IComparer,否则会自动使用 IComparable 接口对键进行排序。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。