0% encontró este documento útil (0 votos)
4 vistas10 páginas

HashSet Presentacion

Un HashSet en Java es una implementación de la interfaz Set que almacena elementos únicos sin duplicados, utilizando internamente un HashMap. Ofrece operaciones de inserción, búsqueda y eliminación en tiempo promedio O(1), pero no garantiza el orden de los elementos y permite un solo valor null. Es ideal para situaciones donde se requiere verificar la existencia de elementos de manera eficiente.

Cargado por

Wolfysma Studios
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas10 páginas

HashSet Presentacion

Un HashSet en Java es una implementación de la interfaz Set que almacena elementos únicos sin duplicados, utilizando internamente un HashMap. Ofrece operaciones de inserción, búsqueda y eliminación en tiempo promedio O(1), pero no garantiza el orden de los elementos y permite un solo valor null. Es ideal para situaciones donde se requiere verificar la existencia de elementos de manera eficiente.

Cargado por

Wolfysma Studios
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

HashSet en Java

Una exploración profunda de una de las estructuras de datos más eficientes del
Java Collections Framework

PROGRAMACIÓN EN JAVA UNIVERSIDAD DE SANTANDER

Integrantes: Angélica · Camilo · Tinoco · Juan · Jhoan

[Link]
¿Qué es un HashSet?
Un HashSet es una de las implementaciones más populares de la interfaz Set
dentro del Java Collections Framework. Su propósito central es almacenar una
colección de elementos sin duplicados, garantizando unicidad de forma automática
y eficiente.

Paquete Interfaz
Pertenece a [Link], disponible Implementa la interfaz Set,
en toda la plataforma Java heredando sus contratos de
estándar. unicidad y operaciones de conjunto.

Base interna
Está construido sobre un HashMap internamente, aprovechando su potente
mecanismo de dispersión.

[Link]
Conceptos y Características Clave
El comportamiento de un HashSet está definido por tres propiedades fundamentales que todo desarrollador debe conocer antes de usarlo en
producción.

Unicidad Total Sin Orden Garantizado Soporte para Null


No permite elementos duplicados bajo No garantiza el orden de iteración de los Permite almacenar un único valor null.
ninguna circunstancia. Usa hashCode() y elementos. El orden interno puede cambiar Intentar insertar un segundo null es
equals() para comparar y verificar que cada dinámicamente al agregar o eliminar datos, lo simplemente ignorado, respetando la regla de
elemento sea único antes de insertarlo. que lo diferencia de LinkedHashSet. unicidad.

[Link]
Sintaxis y Creación de un HashSet
Importación y declaración Anatomía de la declaración

HashSet → Tipo de colección a usar


import [Link];

// Creación básica
<String> → Tipo genérico: almacena texto
HashSet<String> frutas = new HashSet<>();

// Con capacidad inicial


frutas → Nombre descriptivo de la variable
HashSet<Integer> numeros = new HashSet<>(20);

new HashSet<>() → Instancia el objeto en memoria

Puedes parametrizar el tipo genérico con cualquier clase: String, Integer, Double, o incluso clases propias que implementen
correctamente hashCode() y equals().

[Link]
Métodos Principales del HashSet
El API del HashSet ofrece un conjunto de métodos simples pero poderosos para manipular los datos almacenados. Conocerlos bien es esencial para usar esta estructura de
forma efectiva.

add(e)
1
Agrega un elemento al set. Si el elemento ya existe, la operación es ignorada silenciosamente y retorna false.

remove(e)
2
Elimina el elemento especificado. Retorna true si existía, false si no se encontró.

contains(e)
3
Verifica si un elemento existe dentro del set. Operación de búsqueda con complejidad promedio O(1).

size()
4
Retorna el número actual de elementos únicos almacenados en el conjunto.

clear()
5
Elimina todos los elementos del set de una sola vez, dejándolo vacío.

[Link]
¿Cómo Funciona Internamente?
HashSet usa internamente una tabla hash: una estructura de datos que
asigna posiciones de memoria basándose en un código numérico generado hashCode() equals()
Genera un número entero Compara objetos para
por cada elemento. único por objeto. verificar unicidad.

1 Generación del hash

Al insertar un elemento, Java llama a su método hashCode() para


obtener un número entero representativo.

Cálculo de Índice
2 Cálculo del índice Convierte el hash en
posición de la tabla.

El hash se transforma en un índice válido de la tabla interna usando


operaciones de módulo y bit shifting.

3 Verificación con equals()

Si ya existe un elemento en ese índice, se compara con equals() para


confirmar si es duplicado o no.

[Link]
Colisiones y Rendimiento
¿Qué es una colisión? Complejidad de Operaciones

O(1)
Una colisión ocurre cuando dos elementos diferentes generan el mismo valor
de hashCode(). Aunque ambos son distintos según equals(), terminan
apuntando al mismo índice de la tabla.

HashSet resuelve esto internamente usando encadenamiento: en el mismo Inserción


bucket se almacena una lista enlazada de los elementos que colisionaron,
Caso promedio sin colisiones
manteniendo la integridad del conjunto.

Muchas colisiones degradan el rendimiento de O(1) a O(n).


Implementar bien hashCode() en tus clases es crucial.
O(1)
Búsqueda
Localización directa por hash

O(1)
Eliminación
Caso promedio eficiente

[Link]
Ventajas y Desventajas
Ventajas Desventajas

Rendimiento sobresaliente — Sin orden garantizado — los


operaciones en tiempo constante elementos no se iteran en orden de
O(1) en promedio. inserción ni natural.

Unicidad automática — elimina Mayor consumo de memoria — la


duplicados sin código adicional del tabla hash requiere espacio
desarrollador. adicional para funcionar.

Soporte de null — acepta un valor Riesgo de colisiones — un


nulo como elemento válido del hashCode() mal implementado
conjunto. degrada el rendimiento.

Ideal para búsquedas — verificar si No es thread-safe — en entornos


un elemento existe es concurrentes se requiere
extremadamente rápido. sincronización externa.

[Link]
Ejemplo Completo en Java
El siguiente ejemplo demuestra el comportamiento clave del HashSet: la detección y eliminación automática de elementos duplicados.

import [Link];

public class EjemploHashSet {


public static void main(String[] args) {

HashSet<String> frutas = new HashSet<>();

[Link]("Manzana");
[Link]("Banano");
[Link]("Uva");
[Link]("Manzana");

[Link](frutas);
}
}

[Link]
Conclusiones
Datos Únicos
HashSet garantiza que cada elemento almacenado sea único, eliminando duplicados de forma
automática y transparente.

Alta Velocidad
La tabla hash subyacente permite operaciones de inserción, búsqueda y eliminación en tiempo
promedio O(1).

Sin Orden
No conserva el orden de los elementos. Si el orden importa, considera LinkedHashSet o TreeSet.

Colección Esencial
Es una de las colecciones más utilizadas en Java por su eficiencia y simplicidad en escenarios del
mundo real.

¡Gracias por su atención!


Angélica · Camilo · Tinoco · Juan · Jhoan
Programación en Java — Universidad de Santander
[Link]

También podría gustarte