Métodos principales 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
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étodo | Descripció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!