跳過到頁腳內容
.NET幫助

HashSet C#(對於開發者的運行原理)

使用C#進行程式設計是靈活的,並提供大量資料結構以有效管理各種工作。 HashSet是這樣一個強大的資料結構,它提供獨特的組件,並具有基本操作的恆定時間平均複雜性。 HashSet 這篇文章將探討在C#中使用HashSet的方法,以及如何將其與IronPDF這個強大的PDF文件程式庫一起使用。

如何在C#中使用HashSet

  1. 創建一個新的Console App專案。
  2. 在C#中為HashSet創建一個物件。 將預設值新增到HashSet中。
  3. 新增時,HashSet會自動移除重複的元素,通過檢查該元素是否已存在。
  4. 處理HashSet僅包含的唯一元素,一個接一個。
  5. 顯示結果並處理相關物件。

了解C#中的HashSet

C#中的HashSet是為提供高效能集合操作而設計的。 HashSet是保持一組獨特資料的完美集合,它能有效防止重複元素。 它被包含在System.Collections.Generic命名空間中,並提供快速插入、刪除、更快檢索和查找操作。 在C#中,使用HashSet集合操作方法,可以輕鬆執行標準集合操作。 HashSet類別提供集合操作方法。

以下是一些C#中HashSet的用途:

初始化和基本操作

建立HashSet並執行基本操作,如新增、刪除和驗證項目是否存在。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Initializes a HashSet of integers
        HashSet<int> numbers = new HashSet<int>();

        // Adds elements to the HashSet
        numbers.Add(1);
        numbers.Add(2);
        numbers.Add(3);

        // Removes an element from the HashSet
        numbers.Remove(2);

        // Checks f或 membership of an element
        bool containsThree = numbers.Contains(3);

        Console.WriteLine($"Contains 3: {containsThree}");
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Initializes a HashSet of integers
        HashSet<int> numbers = new HashSet<int>();

        // Adds elements to the HashSet
        numbers.Add(1);
        numbers.Add(2);
        numbers.Add(3);

        // Removes an element from the HashSet
        numbers.Remove(2);

        // Checks f或 membership of an element
        bool containsThree = numbers.Contains(3);

        Console.WriteLine($"Contains 3: {containsThree}");
    }
}
$vbLabelText   $csharpLabel

使用集合初始化

使用現有集合作為HashSet的起點,重複項目會立即被消除。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Creates a list with duplicate elements
        List<int> duplicateNumbers = new List<int> { 1, 2, 2, 3, 3, 4 };

        // Initializes a HashSet with the list, automatically removes duplicates
        HashSet<int> uniqueNumbers = new HashSet<int>(duplicateNumbers);

        Console.WriteLine("Unique numbers:");
        f或each (var number in uniqueNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Creates a list with duplicate elements
        List<int> duplicateNumbers = new List<int> { 1, 2, 2, 3, 3, 4 };

        // Initializes a HashSet with the list, automatically removes duplicates
        HashSet<int> uniqueNumbers = new HashSet<int>(duplicateNumbers);

        Console.WriteLine("Unique numbers:");
        f或each (var number in uniqueNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
$vbLabelText   $csharpLabel

與另一個HashSet聯合

結合兩個HashSet實例,使用UnionWith功能生成一個新集合,將兩個集合的不同項目組合。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Merges set2 into set1
        set1.UnionWith(set2);

        Console.WriteLine("Union of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Merges set2 into set1
        set1.UnionWith(set2);

        Console.WriteLine("Union of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
$vbLabelText   $csharpLabel

與另一個HashSet求交

使用IntersectWith功能,確定兩個HashSet實例之間的共有組件。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Keeps only elements that are present in both sets
        set1.IntersectWith(set2);

        Console.WriteLine("Intersection of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Keeps only elements that are present in both sets
        set1.IntersectWith(set2);

        Console.WriteLine("Intersection of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
$vbLabelText   $csharpLabel

與另一個HashSet求差

使用ExceptWith功能,尋找在一個HashSet中而不在另一個中的元素。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Removes elements from set1 that are also in set2
        set1.ExceptWith(set2);

        Console.WriteLine("Difference of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Removes elements from set1 that are also in set2
        set1.ExceptWith(set2);

        Console.WriteLine("Difference of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
$vbLabelText   $csharpLabel

檢查子集或超集:

使用IsSubsetOf和IsSupersetOf方法,可以確定給定的HashSet實例是否是另一個的子集或超集。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 2, 3 };

        // Checks if set2 is a subset of set1
        bool isSubset = set2.IsSubsetOf(set1);

        // Checks if set1 is a superset of set2
        bool isSuperset = set1.IsSupersetOf(set2);

        Console.WriteLine($"Is set2 a subset of set1: {isSubset}");
        Console.WriteLine($"Is set1 a superset of set2: {isSuperset}");
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 2, 3 };

        // Checks if set2 is a subset of set1
        bool isSubset = set2.IsSubsetOf(set1);

        // Checks if set1 is a superset of set2
        bool isSuperset = set1.IsSupersetOf(set2);

        Console.WriteLine($"Is set2 a subset of set1: {isSubset}");
        Console.WriteLine($"Is set1 a superset of set2: {isSuperset}");
    }
}
$vbLabelText   $csharpLabel

對稱差異

使用SymmetricExceptWith技術,確定對稱差異(存在於一個集合中但不在兩者中)。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Keeps elements that are in set1 或 set2 but not in both
        set1.SymmetricExceptWith(set2);

        Console.WriteLine("Symmetric difference of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
        HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };

        // Keeps elements that are in set1 或 set2 but not in both
        set1.SymmetricExceptWith(set2);

        Console.WriteLine("Symmetric difference of set1 and set2:");
        f或each (var item in set1)
        {
            Console.WriteLine(item);
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF

程式設計師可以利用IronPDF .NET程式庫使用C#語言生成,編輯和修改PDF文件。 該應用程式提供了一系列工具和功能,可以對PDF文件進行不同的操作,包括從HTML創建新PDF,將HTML轉換為PDF,結合或分割PDF文件,以及以文本,圖片和其他資料註解現有PDF。 要了解更多關於IronPDF的資訊,請參閱官方說明文件

IronPDF在HTML到PDF轉換中表現出色,確保精確保留原有版面和樣式。 它非常適合從基於網頁的內容如報告、發票和文件中創建PDF。 支持HTML文件、URL和原始HTML字串,IronPDF可輕鬆生成高品質的PDF文件。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel

IronPDF的功能

  • HTML到PDF的轉換: 包括文件,URL和HTML程式碼字符串在內的任何形式的HTML資料均可使用IronPDF轉換為PDF文件。
  • PDF生成: 可以通過C#程式語言將文本,圖片和其他物件編程附加到PDF文件中。
  • PDF操作: IronPDF可以將PDF文件分割成多個文件並編輯現有PDF文件。 它可以將多個PDF文件合併為單個文件。
  • PDF表單: 因為程式庫允許使用者創建和完成PDF表單,所以在表單需要收集和處理資料的情況下它很有用。
  • 安全功能: IronPDF允許對PDF文件進行加密以及密碼和權限安全。

安裝IronPDF

獲取IronPDF程式庫; 即將發布的補丁需要它。 要做到這一點,請在套件管理器中輸入以下程式碼:

Install-Package IronPdf

dotnet add package IronPdf

HashSet C# (How It W或ks F或 Developers): Figure 1 - Install IronPDF library using Package Manager Console and entering the following commands: 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的文件操作功能可能會產生創新的解決方案。

使用HashSet與IronPDF的好處

  • 數據重複消減: 通過確保只保留不同的元素,HashSet有助於避免數據冗餘。 這在處理大型數據集以刪除冗餘信息時非常有用。
  • 有效查找: 使用HashSet,可以以恆定時間平均複雜性執行基本操作,例如插入,刪除和查找。 當處理不同大小的數據集時,這種性能非常重要。
  • 簡化文件生產: IronPDF優化了C# 的PDF文件創建過程。 通過將HashSet與IronPDF集成,您可以為您的PDF創建快速且有效的流程,從而生成原創的和動態的內容。

現在讓我們看一個真實的情況,即使用HashSet與IronPDF可能有用的情況。

生成具有獨特數據的PDF

using IronPdf;
using System;
using System.Collections.Generic;

class PdfGenerat或
{
    static void Main()
    {
        // Sample user names with duplicates
        string[] userNames = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" };

        // Using HashSet to ensure 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
        HtmlToPdf renderer = new HtmlToPdf();

        // Render a PDF from an HTML document consisting of unique user names
        var 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>";
        f或each (var userName in uniqueUserNames)
        {
            htmlDocument += $"<li>{userName}</li>";
        }
        htmlDocument += "</ul></body></html>";
        return htmlDocument;
    }
}
using IronPdf;
using System;
using System.Collections.Generic;

class PdfGenerat或
{
    static void Main()
    {
        // Sample user names with duplicates
        string[] userNames = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" };

        // Using HashSet to ensure 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
        HtmlToPdf renderer = new HtmlToPdf();

        // Render a PDF from an HTML document consisting of unique user names
        var 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>";
        f或each (var userName in uniqueUserNames)
        {
            htmlDocument += $"<li>{userName}</li>";
        }
        htmlDocument += "</ul></body></html>";
        return htmlDocument;
    }
}
$vbLabelText   $csharpLabel

在上面的程式碼範例中,我們使用HashSet uniqueUserNames儲存從數組中檢索的唯一用戶名稱。 HashSet會自動消除重複項。 接著,我們使用IronPDF在PDF文件中創建這些不同用戶名稱的無序列表。 要了解程式碼的更多資訊,請查看使用HTML創建PDF

輸出

HashSet C# (它如何為開發人員工作): 圖 3 - 輸出: UniqueUserNames.pdf

結論

總而言之,C#中的HashSet資料結構是組織獨特元素集的有效工具。 當與IronPDF結合使用時,為動態、獨特的PDF文件創建帶來了新的機會,滿足性能需求。

在給定的例子中,我們說明了如何使用HashSet保證數據唯一性,同時使用IronPDF創建PDF文件。 HashSet與IronPDF的組合可能有助於建立強大且高效的C#應用程序,無論您是處理數據重複、報告還是動態內容管理。 在進一步研究時,請考慮在不同背景下利用這種組合來提高應用程序的可用性和功能。

IronPDF的$799 Lite版本包括永久授權、升級選項和一年的軟體支援。 在授權的試用期全程使用浮水印,以了解更多IronPDF的價格、授權和免費試用。 訪問 Iron Software網站 以獲取更多關於Iron Software的資訊。

常見問題解答

在 C# 中生成 PDF 文件時,我如何確保資料的唯一性?

您可以使用 HashSet 儲存唯一的資料元素,例如使用者名稱,在生成 PDF 文件之前。這確保了重複項的刪除,提供更乾淨和更準確的 PDF 內容。

使用 HashSet 配合 IronPDF 的好處是什麼?

使用 HashSet 配合 IronPDF 在創建 PDF 時能有效管理唯一的資料。HashSet 確保資料的唯一性,而 IronPDF 善於將 HTML 內容轉換成 PDF,保留版面和樣式。

如何在 C# 中將 HTML 內容轉換成 PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法在 C# 中將 HTML 內容轉換成 PDF。此方法允許您直接將 HTML 字串轉換成 PDF,保持原始版式和樣式。

HashSet 在 C# 中支持哪些操作?

C# 中的 HashSet 支持多種集合操作,如 UnionWithIntersectWithExceptWithSymmetricExceptWith,這些有助於高效的資料操作和集合比較。

如何將 HashSet 與 PDF 文件創建集成?

HashSet 與 PDF 文件創建集成,在傳遞給 IronPDF 生成最終的 PDF 文件之前,使用 HashSet 管理和過濾資料以確保唯一性。

HashSet 在動態內容管理中的角色是什麼?

在動態內容管理中,HashSet 通過確保資料保持唯一性發揮關鍵作用,這對於文件生成、報告和維護資料完整性等任務至關重要。

如何在 C# 項目中安裝 IronPDF?

您可以使用 NuGet 套件管理器中的命令 Install-Package IronPDF 安裝 IronPDF 到 C# 項目中,或使用 .NET CLI:dotnet add package IronPDF

HashSet 能提高 C# 應用程式的性能嗎?

是的,HashSet 可以通過提供基本操作(如插入、刪除和查找)的常數時間複雜性來顯著提高 C# 應用程式的性能,使其在管理大型資料集時高效。

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

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

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