Blog de Programación sobre Java y Javascript
 
Collections en Java: LinkedHashSet

Collections en Java: LinkedHashSet

LinkedHashSet es parte de la API de Java Collection que previamente vimos en otro post, ahora veremos las características y código de ejemplo, que se muestran a continuación:

1. ¿Qué es LinkedHashSet?

Es una lista enlazada que extiende atributos y propiedades de la clase HashSet y que además implementa la interfaz Set.

2. ¿Cuáles son las características de LinkedHashSet ?

  1. No contiene pares clave-valor
  2. No permite duplicados por defecto
  3. El orden almacenado es el mismo en el que se insertó, manteniendo el orden de inserción
  4. Bastante rápido y útil para buscar, insertar o remover elementos
  5. Internamente usa LinkedHashMap  para almacenar objetos
  6. Usa hashCode y equals para comparar objetos
  7. Permite solo un valor null
  8. Consume mas memoria que HashSet

3.¿Cuándo usar LinkedHashSet en Java?

Si queremos mantener el orden de inserción de elementos y hacer operaciones como buscar, agregar, eliminar elementos de forma más rápida

Puedes compilar el codigo anterior aqui: https://paiza.io/projects/vOV9j4XiNpl8oZIGnBKxsQ?language=java
Internamente trabaja convirtiendo en LinkedHashMap, y luego coloca como valor a un objeto constante llamado PRESENT, que es un object, aqui dejo la imagen:

Trabajo internamente de linkedHashSet

Lo que realiza es ingresar cada elemento en un nodo, con el que va a guardarlo como si fuera un hashMap (con clave-valor, siendo clave el propio objeto y el valor sería un objeto constante para este ejemplo: PRESENT ), el resultado será:

Otro ejemplo con LinkedHashSet en Java usando operaciones, lo tenemos en el siguiente bloque de código:

Como verás hemos agregado diversas operaciones: desde listas todos los elementos, mostrar el tamaño, remover elemento y verificar si existe el objeto en el linkedHashSet, el resultado es el siguiente:

4. Análisis de Complejidad

Para las operaciones Add, remove, contains son de tiempo de eficiencia O(1) [3]

5. Fuentes

1. Java Generics and Collections, M. Naftaling y P. Wadler
2. Core Java: Volume I Fundamentals, 11th Edition
3. Java 8 Pocket Guide. Robert Liguori & Patricia Liguori

Comments are closed.