AYUDA .NET

HashSet C# (Cómo funciona para desarrolladores)

Actualizado 6 de marzo, 2024
Compartir:

Introducción

La programación en C# es flexible y ofrece una gran variedad de estructuras de datos para gestionar eficazmente diversos trabajos. En HashSet es una de esas potentes estructuras de datos que ofrece componentes distintos y una complejidad media en tiempo constante para las operaciones fundamentales. Este post examinará el uso de HashSet en C# y cómo se puede utilizar con IronPDF una potente biblioteca para trabajar con documentos PDF.

Cómo utilizar HashSet C#

  1. Cree un nuevo proyecto de aplicación de consola.
  2. Crear un objeto para el HashSet en C#. Añade el valor por defecto al HashSet.
  3. Al añadir, HashSet eliminará automáticamente los elementos duplicados comprobando si el elemento existe.
  4. Procesa el HashSet sólo los elementos únicos de uno en uno.
  5. Muestra el resultado y elimina el objeto.

Entendiendo HashSet en C#

HashSet en C# está diseñado para proporcionar operaciones de conjunto de alto rendimiento. Un HashSet es la colección perfecta para utilizar en situaciones en las que se necesita mantener un conjunto de datos distinto, ya que evita los elementos duplicados. Se incluye en las tablas System.Assortments.Hash, la base del espacio de nombres genérico de C#, y proporciona operaciones rápidas de inserción, eliminación, recuperación y búsqueda. También podemos encontrar el subconjunto adecuado en los elementos HashSet. En C#, utilice los métodos de operaciones de conjunto HashSet que le permiten realizar fácilmente operaciones de conjunto estándar. La clase HashSet proporciona métodos de operaciones de conjunto.

Los siguientes son algunos usos en C# de un HashSet:

Inicialización y operaciones básicas

Establecer un HashSet y llevar a cabo acciones fundamentales como añadir, eliminar y verificar la existencia de entradas.

//  operaciones de ajuste 
HashSet<int> numbers = new HashSet<int>();
//  Añadir elementos
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
//  Eliminar un elemento, función predicado
numbers.Remove(2);
//  Comprobación de pertenencia o elemento duplicado
bool containsThree = numbers.Contains(3);
//  operaciones de ajuste 
HashSet<int> numbers = new HashSet<int>();
//  Añadir elementos
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
//  Eliminar un elemento, función predicado
numbers.Remove(2);
//  Comprobación de pertenencia o elemento duplicado
bool containsThree = numbers.Contains(3);
'  operaciones de ajuste 
Dim numbers As New HashSet(Of Integer)()
'  Añadir elementos
numbers.Add(1)
numbers.Add(2)
numbers.Add(3)
'  Eliminar un elemento, función predicado
numbers.Remove(2)
'  Comprobación de pertenencia o elemento duplicado
Dim containsThree As Boolean = numbers.Contains(3)
VB   C#

Inicialización con recogida

Al utilizar una colección existente como punto de partida para un HashSet, los duplicados se eliminan inmediatamente.

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

Unión con otro HashSet

Combinar dos instancias de HashSet para producir un nuevo conjunto que combine elementos distintos de ambos conjuntos utilizando la función UnionWith.

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.UnionWith(set2); //  set1 ahora contiene { 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 ahora contiene { 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 ahora contiene { 1, 2, 3, 4, 5 }
VB   C#

Intersección con otro HashSet

Utilizando la función IntersectWith, determina los componentes compartidos entre dos instancias de HashSet.

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.IntersectWith(set2); //  set1 ahora contiene { 3 }
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.IntersectWith(set2); //  set1 ahora contiene { 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 ahora contiene { 3 }
VB   C#

Diferencia con otro HashSet

Utilizando la función ExceptWith, encuentra los elementos que están en un HashSet pero no en otro.

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.ExceptWith(set2); //  set1 ahora contiene { 1, 2 }
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.ExceptWith(set2); //  set1 ahora contiene { 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 ahora contiene { 1, 2 }
VB   C#

Comprobación de subconjunto o superconjunto:

Los métodos IsSubsetOf e IsSupersetOf permiten determinar si un HashSet es un subconjunto o un superconjunto de otro.

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 2, 3 };
bool isSubset = set2.IsSubsetOf(set1); //  devuelve verdadero
bool isSuperset = set1.IsSupersetOf(set2); //  devuelve verdadero
HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 2, 3 };
bool isSubset = set2.IsSubsetOf(set1); //  devuelve verdadero
bool isSuperset = set1.IsSupersetOf(set2); //  devuelve verdadero
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) '  devuelve verdadero
Dim isSuperset As Boolean = set1.IsSupersetOf(set2) '  devuelve verdadero
VB   C#

Diferencia simétrica

Utilizando la técnica SymmetricExceptWith, determine la diferencia simétrica (elementos presentes en un conjunto, pero no en ambos).

HashSet<int> set1 = new HashSet<int> { 1, 2, 3 };
HashSet<int> set2 = new HashSet<int> { 3, 4, 5 };
set1.SymmetricExceptWith(set2); //  set1 ahora contiene { 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 ahora contiene { 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 ahora contiene { 1, 2, 4, 5 }
VB   C#

IronPDF

Los programadores pueden utilizar el lenguaje C# para producir, editar y modificar documentos PDF mediante el uso de la función IronPDF Biblioteca PDF .NET. La aplicación ofrece una amplia gama de herramientas y funciones que permiten realizar distintas operaciones con archivos PDF, como crear nuevos PDF a partir de HTML, convertir HTML a PDF, combinar o dividir documentos PDF y anotar PDF existentes con texto, fotos y otros datos. Para saber más sobre IronPDF, consulte este enlace documentación.

Características de IronPDF

  • Conversión de HTML a PDF: Cualquier tipo de datos HTML, incluidos archivos, URL y cadenas de código HTML, pueden convertirse en documentos PDF con IronPDF.
  • Generación de PDF: El texto, las imágenes y otros objetos pueden añadirse mediante programación a los documentos PDF utilizando el lenguaje de programación C#.
  • Manipulación de PDF: IronPDF puede dividir un archivo PDF en numerosos archivos y editar archivos PDF preexistentes. Puede fusionar varios archivos PDF en un único archivo.
  • Formularios PDF: Dado que la biblioteca permite a los usuarios crear y completar formularios PDF, resulta útil en situaciones en las que es necesario recopilar y procesar datos de formularios.
  • Funciones de seguridad: IronPDF permite el cifrado de documentos PDF, así como la seguridad de contraseñas y permisos.

Instalar IronPDF

Adquiera la biblioteca IronPDF; el próximo parche lo requiere. Para ello, introduzca el siguiente código en el Gestor de paquetes:

Install-Package IronPDF 
//o 
dotnet add package IronPdf

HashSet C# (Cómo funciona para desarrolladores): Figura 1 - Instalar la librería IronPDF utilizando la consola del gestor de paquetes e introduciendo los siguientes comandos: "Install-Package IronPDF" o "dotnet add package IronPdf".

Otra opción es buscar el paquete "IronPDF" utilizando el gestor de paquetes NuGet. De todos los paquetes NuGet relacionados con IronPDF, podemos seleccionar y descargar el paquete requerido de esta lista.

HashSet C# (Cómo funciona para los desarrolladores): Figura 2 - Puede instalar la biblioteca IronPDF utilizando NuGet Package Manager. Busque el paquete "ironpdf" en la pestaña Examinar y, a continuación, seleccione e instale la última versión de IronPDF.

HashSet con IronPDF

Dentro del entorno C#, IronPDF es una potente biblioteca que facilita el trabajo con documentos PDF. En situaciones en las que la representación clara de los datos y la creación eficaz de documentos son cruciales, la combinación de la eficacia de HashSet con los poderes de manipulación de documentos de IronPDF puede dar lugar a soluciones creativas.

Ventajas de utilizar HashSet con IronPDF

  • Reducción de la redundancia de datos: Al garantizar que sólo se conservan elementos distintos, los HashSets ayudan a evitar la duplicación de datos. Esto resulta muy útil cuando se trabaja con conjuntos de datos enormes para eliminar información duplicada.
  • Búsqueda eficaz: Las operaciones básicas como la inserción, la eliminación y la búsqueda pueden realizarse con una complejidad media de tiempo constante utilizando HashSet. Este tipo de rendimiento es muy importante cuando se trabaja con conjuntos de datos de distintos tamaños.
  • Producción simplificada de documentos: IronPDF agiliza el proceso de creación de documentos PDF en C#. Puede establecer procesos rápidos y eficaces para producir contenido original y dinámico para sus PDF integrando HashSet con IronPDF.

    Veamos ahora un escenario real en el que el uso de HashSet con IronPDF puede resultar útil.

Generar PDF con datos únicos

using IronPdf;
using System;
using System.Collections.Generic;
using System.IO;
class PdfGenerator
{
    static void Main()
    {
        //  Ejemplos de nombres de usuario
        string [] userNames = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" };
        //  Uso de HashSet para almacenar nombres de usuario únicos
        HashSet<string> uniqueUserNames = new HashSet<string>(userNames);
        //  Generar PDF con nombres de usuario únicos
        GeneratePdf(uniqueUserNames);
    }
    static void GeneratePdf(HashSet<string> uniqueUserNames)
    {
        //  Crear un nuevo documento PDF con IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf(BuildHtmlDocument(uniqueUserNames));
        //  Guardar el PDF en un archivo
        string pdfFilePath = "UniqueUserNames.pdf";
        pdf.SaveAs(pdfFilePath);
        //  Mostrar un mensaje con la ruta del archivo
        Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}");
    }
    static string BuildHtmlDocument(HashSet<string> uniqueUserNames)
    {
        //  Construir un documento HTML con nombres de usuario únicos
        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()
    {
        //  Ejemplos de nombres de usuario
        string [] userNames = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" };
        //  Uso de HashSet para almacenar nombres de usuario únicos
        HashSet<string> uniqueUserNames = new HashSet<string>(userNames);
        //  Generar PDF con nombres de usuario únicos
        GeneratePdf(uniqueUserNames);
    }
    static void GeneratePdf(HashSet<string> uniqueUserNames)
    {
        //  Crear un nuevo documento PDF con IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf(BuildHtmlDocument(uniqueUserNames));
        //  Guardar el PDF en un archivo
        string pdfFilePath = "UniqueUserNames.pdf";
        pdf.SaveAs(pdfFilePath);
        //  Mostrar un mensaje con la ruta del archivo
        Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}");
    }
    static string BuildHtmlDocument(HashSet<string> uniqueUserNames)
    {
        //  Construir un documento HTML con nombres de usuario únicos
        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()
		'  Ejemplos de nombres de usuario
		Dim userNames() As String = { "Alice", "Bob", "Charlie", "Bob", "David", "Alice" }
		'  Uso de HashSet para almacenar nombres de usuario únicos
		Dim uniqueUserNames As New HashSet(Of String)(userNames)
		'  Generar PDF con nombres de usuario únicos
		GeneratePdf(uniqueUserNames)
	End Sub
	Private Shared Sub GeneratePdf(ByVal uniqueUserNames As HashSet(Of String))
		'  Crear un nuevo documento PDF con IronPDF
		Dim renderer As New IronPdf.HtmlToPdf()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(BuildHtmlDocument(uniqueUserNames))
		'  Guardar el PDF en un archivo
		Dim pdfFilePath As String = "UniqueUserNames.pdf"
		pdf.SaveAs(pdfFilePath)
		'  Mostrar un mensaje con la ruta del archivo
		Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}")
	End Sub
	Private Shared Function BuildHtmlDocument(ByVal uniqueUserNames As HashSet(Of String)) As String
		'  Construir un documento HTML con nombres de usuario únicos
		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#

En el ejemplo de código anterior, guardamos nombres de usuario únicos recuperados de una matriz utilizando un HashSet uniqueUserNames. El HashSet elimina automáticamente los duplicados. A continuación, creamos una lista desordenada de estos nombres de usuario distintos en un documento PDF utilizando IronPDF. Para saber más sobre el código, consulte aquí.

SALIDA

HashSet C# (Cómo funciona para desarrolladores): Figura 3 - Salida: UniqueUserNames.pdf

Conclusión

En resumen, la estructura de datos HashSet de C# es una herramienta eficaz para organizar conjuntos de elementos distintos. Crea nuevas oportunidades para la creación de documentos PDF dinámicos, únicos y de rendimiento optimizado cuando se combina con IronPDF.

Ilustramos cómo utilizar HashSet para garantizar la unicidad de los datos mientras se utiliza IronPDF para crear documentos PDF en el ejemplo que se dio. La creación de aplicaciones C# sólidas y eficaces puede beneficiarse de la combinación de HashSet e IronPDF, tanto si trabaja en la deduplicación de datos, la generación de informes o la gestión de contenidos dinámicos. A medida que investigues más, ten en cuenta los muchos contextos en los que podrías utilizar esta combinación para mejorar la usabilidad y funcionalidad de tus aplicaciones.

La versión $749 Lite de IronPDF incluye una licencia permanente, opciones de actualización y un año de soporte de software. En toda la marca de agua periodo de prueba para obtener más información sobre el precio, las licencias y la versión de prueba gratuita de IronPDF. Visita esta página página para más información sobre Iron Software.

< ANTERIOR
C# Nameof (Cómo funciona para los desarrolladores)
SIGUIENTE >
C# Array Length (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123