Métodos principales HashSet en Java

hashSet en Java

hashSet en Java


En esta nueva entrada vamos a seguir viendo implementaciones de Collection, en este caso el Métodos principales HashSet en Java. En una entrada anterior vimos el uso de ArrayList.

Un HashSet de Java se usa para crear una «colección» de elementos que harán uso de una tabla hash para guardarlos.

Características principales de HashSet

A continuación vamos a ver las principales características de HashSet:

  • Como hemos comentado anteriormente almacena los datos en una tabla Hash
  • Tiene elementos únicos, principal diferencia con un ArrayList.
  • Los elementos se ordenan en función de su hashcode, no en función del orden que insercción.
  • Mejor rendimiento que ArrayList para las búsquedas.

La declaración de un HashSet es:

public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable  
Uso de HashSet en Java
HashSet en Java

Constructor de un HashSet

Tenemos cuatro maneras diferentes de construir un HashSet:

Construcción por defecto:

new HashSet()

Estableciendo una capacidad:

new HashSet(10);

Inicializar con la capacidad del HashSet y especificar el load factor.

new HashSet(10, 10.10)-> 10.10 Load factor

El factor de carga es una medida de qué tan lleno se le permite estar al HashSet antes de que su capacidad aumente automáticamente

Crear HashSet extendiendo del tipo de objeto a guardar:

HashSet(Collection<? extends E> c)

Métodos principales de un HashSet

A continuación vamos a ver los métodos principales que podemos usar con nuestro HashSet:

MétodoDescripción
boolean add(E element)Añade un nuevo elemento. Únicamente se añade si el elemento no se encuentra presente. Devuelve False si el elemento se encuentra en el Set.
boolean addAll(Collection<? extends E> c)Añade todos los elementos de la colección pasada por parámetro, se añaden sin un orden específico. Devuelve True si se han podido añadir todos.
clear()Elimina todos los elementos de un Set.
boolean contains(Object o)Devuelve True si el Elemento pasado por parámetro se encuentra en el Set.
boolean containsAll(Collection<? extends E> c)Este método nos permite saber si una colección pasada por parámetro se encuentra en el Set. Devuelve true si contiene todos los elementos de la colección y False si alguno de los elementos no se encuentra.
int hashCode()Devuelve el hashCode del valor de la instancia.
boolean isEmpty()Devuelve True si el Set esta vacío.
iterator()Devuelve el iterator de un Set. Los elementos se devuelven de manera aleatoria.
boolean remove(Object o)Devuelve True si el elemento pasado por parámetro se elimina del Set.
boolean removeAll(Collection<?> c)Elimina todos los elementos pasados en la colección por parámetro. Devuelve True si el Set cambia.
boolean retainAll(Collection<?> c)Este método es usado para mantener los elementos pasados por parámetro, siempre y cuando existan. Devuelve True si el set cambia.
int size()Devuelve un integer con el tamaño del set.
toArray()Devuelve un Array con los mismos elementos que el Set.

Ejemplos de Uso de HashSet en Java

Crear un HashSet

HashSet<String> set=new HashSet();  

Añadir un elemento a un HashSet

HashSet<String> set=new HashSet();  
set.add("hola");

Recorrer un Set con forEach

 public static void main(String args[]){  
  HashSet<String> names=new HashSet();  
  names.add("Pepe");  
  names.add("Pep");  
  names.add("Pablo");  
  
  names.forEach(name->{
   System.out.println(name);
  });
  
} 

Salida:

Pablo
Pep
Pepe

Eliminar elementos de un HashSet

 public static void main(String args[]){  
  HashSet<String> names=new HashSet();  
  names.add("Pepe");  
  names.add("Pep");  
  names.add("Pablo");  

  names.remove("Pepe");
 
  System.out.println("names);  

  
} 

Crear un HashSet con los elementos de un ArrayList

public static void main(String args[]){  
  ArrayList<String> names=new ArrayList<String>();  
  names.add("Pepe");  
  names.add("Pep");  
  names.add("Pablo");
             
  HashSet<String> newSet=new HashSet(list);  
 }  
}  

Eliminar todos los elementos de un Set

 public static void main(String args[]){  
  HashSet<String> names=new HashSet();  
  names.add("Pepe");  
  names.add("Pep");  
  names.add("Pablo");  

  HashSet<String>setRemove=new HashSet<String>();  
  setRemove.add("Pepe");  
  setRemove.add("Pep");
  names.removeAll(setRemove);
 
  System.out.println("names);  

  
} 

Ejemplo de retainAll en un HashSet

El método retainAll() funciona con el objetivo de mantener todos los elementos que están contenidos en una colección específica.

public void retainAllExample() {
  
            HashSet<Integer> numbersValues = new HashSet<Integer>();
  
            numbersValues.add(4);
            numbersValues.add(6);
            numbersValues.add(8);
            numbersValues.add(10);
            numbersValues.add(12);
  
            System.out.println("Initial hashSet " + numbersValues);
  
            // HashSet to retain
            HashSet<Integer> numbersValuesToRetain = new HashSet<Integer>();
            arrset2.add(4);
            arrset2.add(6);
            arrset2.add(8);
  
            System.out.println("Values to retain" + numbersValuesToRetain);

            numbersValues.retainAll(numbersValuesToRetain);
  
            System.out.println("HashSet after retainAll " + numbersValues);
        }

Una vez ejecutado el código anterior el resultado sería:

Initial hashSet : [4, 6, 8, 10, 12]
Values to retain : [4, 6, 8]
HashSet after retainAll() operation : [4, 6, 8]

Otros artículos relacionados.

Uso de Stream filter() en Java

Uso de Peek PeekFirst y PeekLast en LinkedList

Métodos principales de HashMap en Java

Conclusión

En esta entrada hemos visto el Métodos principales HashSet en Java así como sus principales características. Conocer como funciona Set y como aplicarlo nos ayudará a mejorar nuestras aplicaciones y poder aplicar colecciones de una manera más eficiente.

Si necesitas más información puedes escribirnos un comentario o un correo electrónico a refactorizando.web@gmail.com o también nos puedes contactar por nuestras redes sociales Facebook o twitter y te ayudaremos encantados!


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *