.NET 帮助

HashSet C#(它对开发人员的用途)

发布 2024年三月6日
分享:

介绍

C# 编程非常灵活,提供了大量数据结构,可有效管理各种工作。 "(《世界人权宣言》)哈希集合例如,.NET、Java、Python 或 Node js 就是这样一种强大的数据结构,它提供了独特的组件和基本操作的恒定时间平均复杂度。 本篇文章将探讨 HashSet 在 C# 中的使用,以及如何将其与IronPDF是一个功能强大的用于处理 PDF 文档的库。

如何使用 HashSet C#

  1. 创建一个新的控制台应用程序项目。

  2. 在 C# 中为 HashSet 创建一个对象。 向 HashSet 添加默认值。

  3. 在添加时,HashSet 会通过检查元素是否存在来自动删除重复的元素。

  4. 逐一处理 HashSet 中唯一的元素。

  5. 显示结果并处理对象。

理解 C# 中的 HashSet;

C# 中的 HashSet 旨在提供高性能的集合操作。 当您需要保留一组不同的数据时,HashSet 是一个完美的集合,因为它可以防止元素重复。 它包含在 System.Assortments.Hash 表中,是 C# 通用命名空间的基础,可提供快速插入、删除、更快检索和查找操作。 我们还可以在 HashSet 元素中找到适当的子集。 在 C# 中,使用 HashSet 集合操作方法可让您轻松执行标准集合操作。 HashSet 类提供了集合操作方法。

以下是 HashSet 的几种 C# 用途:

初始化和基本操作

建立 HashSet 并执行基本操作,如追加、删除和验证条目的存在。

// set operations 
HashSet<int> numbers = new HashSet<int>();
// Add elements
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
// Remove an element, predicate function
numbers.Remove(2);
// Check for membership or duplicate element
bool containsThree = numbers.Contains(3);
// set operations 
HashSet<int> numbers = new HashSet<int>();
// Add elements
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
// Remove an element, predicate function
numbers.Remove(2);
// Check for membership or duplicate element
bool containsThree = numbers.Contains(3);
' set operations 
Dim numbers As New HashSet(Of Integer)()
' Add elements
numbers.Add(1)
numbers.Add(2)
numbers.Add(3)
' Remove an element, predicate function
numbers.Remove(2)
' Check for membership or duplicate element
Dim containsThree As Boolean = numbers.Contains(3)
VB   C#

使用集合进行初始化

使用现有的集合作为 HashSet 的起点,可以立即消除重复。

List<int> duplicateNumbers = new List<int> { 1, 2, 2, 3, 3, 4 }; // all the elements
HashSet<int> uniqueNumbers = new HashSet<int>(duplicateNumbers);
List<int> duplicateNumbers = new List<int> { 1, 2, 2, 3, 3, 4 }; // all the elements
HashSet<int> uniqueNumbers = new HashSet<int>(duplicateNumbers);
Dim duplicateNumbers As New List(Of Integer) From {1, 2, 2, 3, 3, 4} ' all the elements
Dim uniqueNumbers As New HashSet(Of Integer)(duplicateNumbers)
VB   C#

与另一个哈希集合的联合

使用 UnionWith 函数合并两个 HashSet 实例以生成一个新集,该新集合并了两个集中的不同项。

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.UnionWith(set2); // set1 now contains { 1, 2, 3, 4, 5 }
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.UnionWith(set2); // set1 now contains { 1, 2, 3, 4, 5 }
Dim set1 As New HashSet(Of Integer) From {1, 2, 3}
Dim set2 As New HashSet(Of Integer) From {3, 4, 5}
set1.UnionWith(set2) ' set1 now contains { 1, 2, 3, 4, 5 }
VB   C#

与另一个哈希集合的交集

使用 IntersectWith 函数,确定两个 HashSet 实例之间的共享组件。

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.IntersectWith(set2); // set1 now contains { 3 }
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.IntersectWith(set2); // set1 now contains { 3 }
Dim set1 As New HashSet(Of Integer) From {1, 2, 3}
Dim set2 As New HashSet(Of Integer) From {3, 4, 5}
set1.IntersectWith(set2) ' set1 now contains { 3 }
VB   C#

与另一个哈希集合的区别

使用 ExceptWith 函数,查找在一个 HashSet 中但不在另一个 HashSet 中的元素。

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.ExceptWith(set2); // set1 now contains { 1, 2 }
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.ExceptWith(set2); // set1 now contains { 1, 2 }
Dim set1 As New HashSet(Of Integer) From {1, 2, 3}
Dim set2 As New HashSet(Of Integer) From {3, 4, 5}
set1.ExceptWith(set2) ' set1 now contains { 1, 2 }
VB   C#

检查子集或超集:

使用 IsSubsetOf 和 IsSupersetOf 方法,可以确定给定的 HashSet 实例是另一个实例的子集还是超集。

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 2, 3 };
bool isSubset = set2.IsSubsetOf(set1); // returns true
bool isSuperset = set1.IsSupersetOf(set2); // returns true
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 2, 3 };
bool isSubset = set2.IsSubsetOf(set1); // returns true
bool isSuperset = set1.IsSupersetOf(set2); // returns true
Dim set1 As New HashSet(Of Integer) From {1, 2, 3}
Dim set2 As New HashSet(Of Integer) From {2, 3}
Dim isSubset As Boolean = set2.IsSubsetOf(set1) ' returns true
Dim isSuperset As Boolean = set1.IsSupersetOf(set2) ' returns true
VB   C#

对称差异

使用 SymmetricExceptWith 技术,确定对称差异(元素在一组中存在,但在两组中都不存在).

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.SymmetricExceptWith(set2); // set1 now contains { 1, 2, 4, 5 }
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.SymmetricExceptWith(set2); // set1 now contains { 1, 2, 4, 5 }
Dim set1 As New HashSet(Of Integer) From {1, 2, 3}
Dim set2 As New HashSet(Of Integer) From {3, 4, 5}
set1.SymmetricExceptWith(set2) ' set1 now contains { 1, 2, 4, 5 }
VB   C#

IronPDF

程序员可以使用 C# 语言制作、编辑和修改 PDF 文档,方法是利用IronPDF for .NET 库. 该应用程序提供多种工具和功能,可对 PDF 文件进行不同操作,包括从 HTML 创建新的 PDF、将 HTML 转换为 PDF、合并或分割 PDF 文档,以及用文本、照片和其他数据对现有 PDF 进行注释。 要了解有关 IronPDF 的更多信息,请参阅官方文档.

IronPDF 的功能

  • HTML 到 PDF 的转换:任何类型的 HTML 数据,包括文件、URL 和 HTML 代码字符串,都可以通过 IronPdf 转换为 PDF 文档。
  • PDF 生成:可使用 C# 编程语言以编程方式将文本、图像和其他对象添加到 PDF 文档中。
  • PDF 操作:IronPdf 可以将一个 PDF 文件分割成多个文件,并编辑预先存在的 PDF 文件。 它可以将多个 PDF 文件合并为一个文件。
  • PDF 表单:由于该库使用户能够构建和完成 PDF 表单,因此在需要收集和处理表单数据的场景中非常有用。
  • 安全功能:IronPdf 允许 PDF 文档加密以及密码和权限安全。

安装 IronPDF

获取 IronPDF 库; 即将发布的补丁需要翻译。 为此,请在软件包管理器中输入以下代码:

Install-Package IronPDF 
//or 
dotnet add package IronPdf

HashSet C#(开发人员如何使用):图 1 - 使用软件包管理器控制台并输入以下命令安装 IronPDF 库:"Install-Package IronPDF" 或 "dotnet add package IronPdf"。

另一种方法是使用 NuGet 软件包管理器查找软件包 "IronPDF"。 从所有与 IronPdf 相关的 NuGet 软件包中,我们可以从该列表中选择并下载所需的软件包。

HashSet C#(如何为开发人员服务):图 2 - 您可以使用 NuGet 包管理器安装 IronPDF 库。 在浏览标签中搜索包 ironpdf,然后选择并安装最新版本的 IronPDF。

使用 IronPDF 的 HashSet

在 C# 环境中,IronPdf 是一个功能强大的库,可以让 PDF 文档的处理变得更加简单。 在对独特的数据表示和有效的文档创建至关重要的情况下,将 HashSet 的效率与 IronPDF 的文档操作能力相结合,可能会产生创造性的解决方案。

与 IronPDF 一起使用 HashSet 的好处

  • 减少数据冗余:通过确保只保留不同的元素,哈希集合有助于避免数据重复。 在处理庞大的数据集以删除重复信息时,这一点非常有用。
  • 有效查找:使用 HashSet 可以以恒时平均复杂度执行插入、删除和查找等基本操作。 在处理不同大小的数据集时,这种性能非常重要。
  • 简化文档制作:IronPDF 简化了 C# PDF 文档创建流程。 通过将 HashSet 与 IronPDF 集成,您可以建立快速有效的流程,为 PDF 制作原创的动态内容。

    现在,让我们看看在现实世界中使用 IronPDF 的 HashSet 可能会有什么用处。

生成包含唯一数据的 PDF

using IronPdf;
using System;
using System.Collections.Generic;
using System.IO;
class PdfGenerator
{
    static void Main()
    {
        // Sample user names
        string [] userNames = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" };
        // Using HashSet to store unique user names
        HashSet<string> uniqueUserNames = new HashSet<string>(userNames);
        // Generating PDF with unique user names
        GeneratePdf(uniqueUserNames);
    }
    static void GeneratePdf(HashSet<string> uniqueUserNames)
    {
        // Create a new PDF document using IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf(BuildHtmlDocument(uniqueUserNames));
        // Save the PDF to a file
        string pdfFilePath = "UniqueUserNames.pdf";
        pdf.SaveAs(pdfFilePath);
        // Display a message with the file path
        Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}");
    }
    static string BuildHtmlDocument(HashSet<string> uniqueUserNames)
    {
        // Build an HTML document with unique user names
        string htmlDocument = "<html><body><ul>";
        foreach (var userName in uniqueUserNames)
        {
            htmlDocument += $"<li>{userName}</li>";
        }
        htmlDocument += "</ul></body></html>";
        return htmlDocument;
    }
}
using IronPdf;
using System;
using System.Collections.Generic;
using System.IO;
class PdfGenerator
{
    static void Main()
    {
        // Sample user names
        string [] userNames = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" };
        // Using HashSet to store unique user names
        HashSet<string> uniqueUserNames = new HashSet<string>(userNames);
        // Generating PDF with unique user names
        GeneratePdf(uniqueUserNames);
    }
    static void GeneratePdf(HashSet<string> uniqueUserNames)
    {
        // Create a new PDF document using IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf(BuildHtmlDocument(uniqueUserNames));
        // Save the PDF to a file
        string pdfFilePath = "UniqueUserNames.pdf";
        pdf.SaveAs(pdfFilePath);
        // Display a message with the file path
        Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}");
    }
    static string BuildHtmlDocument(HashSet<string> uniqueUserNames)
    {
        // Build an HTML document with unique user names
        string htmlDocument = "<html><body><ul>";
        foreach (var userName in uniqueUserNames)
        {
            htmlDocument += $"<li>{userName}</li>";
        }
        htmlDocument += "</ul></body></html>";
        return htmlDocument;
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.IO
Friend Class PdfGenerator
	Shared Sub Main()
		' Sample user names
		Dim userNames() As String = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" }
		' Using HashSet to store unique user names
		Dim uniqueUserNames As New HashSet(Of String)(userNames)
		' Generating PDF with unique user names
		GeneratePdf(uniqueUserNames)
	End Sub
	Private Shared Sub GeneratePdf(ByVal uniqueUserNames As HashSet(Of String))
		' Create a new PDF document using IronPDF
		Dim renderer As New IronPdf.HtmlToPdf()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(BuildHtmlDocument(uniqueUserNames))
		' Save the PDF to a file
		Dim pdfFilePath As String = "UniqueUserNames.pdf"
		pdf.SaveAs(pdfFilePath)
		' Display a message with the file path
		Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}")
	End Sub
	Private Shared Function BuildHtmlDocument(ByVal uniqueUserNames As HashSet(Of String)) As String
		' Build an HTML document with unique user names
		Dim htmlDocument As String = "<html><body><ul>"
		For Each userName In uniqueUserNames
			htmlDocument &= $"<li>{userName}</li>"
		Next userName
		htmlDocument &= "</ul></body></html>"
		Return htmlDocument
	End Function
End Class
VB   C#

在上述代码示例中,我们使用 HashSet uniqueUserNames 保存从数组中获取的唯一用户名。 HashSet 可自动消除重复内容。 接下来,我们使用 IronPDF 在 PDF 文档中创建这些不同用户名的无序列表。 要了解有关代码的更多信息,请查看使用 HTML 创建 PDF.

输出

HashSet C#(如何为开发人员工作):图 3 - 输出:UniqueUserNames.pdf

结论

总而言之,C# HashSet 数据结构是组织不同项目集的有效工具。 与 IronPDF 搭配使用时,它为动态、独一无二和性能优化的 PDF 文档创建创造了新的机会。

我们说明了如何使用 HashSet 来保证数据的唯一性,同时使用IronPDF以创建 PDF 文档为例。 构建强大有效的 C# 应用程序可能会从 HashSet 和 IronPDF 的组合中受益,无论您是从事重复数据删除、报告还是管理动态内容。 在您进行更多调查时,请考虑到您可能会在许多情况下使用这种组合来提高应用程序的可用性和功能。

$749 Lite 版本的 IronPDF 附带永久许可证、升级选项和一年的软件支持。 整个水印许可试用期了解有关 IronPdf 价格、许可和免费试用的更多信息。 访问Iron 软件网站了解有关 Iron 软件的更多信息。

< 前一页
C# Nameof(它如何为开发人员工作)
下一步 >
C# 数组长度(开发人员使用方法)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >