Ordenar un conjunto en Java
- Usar una lista para mostrar un conjunto ordenado en Java
-
Utilice el
TreeSet
para mostrar un conjunto ordenado en Java -
Utilice la función
stream()
para mostrar un conjunto ordenado en Java
En Java, los conjuntos o HashSet
se utilizan comúnmente para acceder de forma aleatoria a los elementos, ya que se accede a los elementos de la tabla hash mediante códigos hash. El código hash es una identidad única que nos ayuda a identificar los elementos de la tabla hash.
Un HashSet
es una colección desordenada. Un conjunto en Java no tiene métodos de acceso aleatorio (como get(i)
donde i es un índice de ese elemento), que son requisitos esenciales para los algoritmos de clasificación. En pocas palabras, como HashSet
tiene sus elementos colocados aleatoriamente, no ofrece ninguna garantía para ordenar sus elementos debido a un orden indefinido.
Por lo tanto, necesitamos pensar un poco fuera de la caja para ordenar un conjunto en Java. Discutiremos algunos métodos para convertirlo a una estructura diferente y ordenarlo.
Usar una lista para mostrar un conjunto ordenado en Java
Una forma de ordenar un HashSet
es primero convertirlo en una lista y luego ordenarlo.
Agregaremos los elementos del conjunto a la lista y luego usaremos la función sort()
para ordenarlos.
Por ejemplo,
import java.util.*;
public class example {
public static void main(String[] args) {
HashSet<Integer> number = new HashSet<>();
// Using add() method
number.add(3);
number.add(6);
number.add(4);
// converting HashSet to arraylist
ArrayList<Integer> al = new ArrayList<>(number);
// sorting the list and then printing
Collections.sort(al);
System.out.println("Sorted list: ");
for (int x : al) {
System.out.print(x + " ");
}
}
}
Producción :
Sorted list:
3 4 6
Utilice el TreeSet
para mostrar un conjunto ordenado en Java
La clase TreeSet
de la interfaz Collections
nos proporciona la funcionalidad de estructura de datos de árbol. Podemos convertir el HashSet
en TreeSet
cuando iteramos a través de esta colección. Los elementos se extraen en un orden bien definido.
TreeSet
implementa la interfaz NavigableSet
, que extiende SortedSet
, que extiende aún más la interfaz Set
.
Vea el siguiente ejemplo.
import java.util.*;
public class example {
public static void main(String[] args) {
HashSet<Integer> number = new HashSet<>();
// Using add() method
number.add(3);
number.add(6);
number.add(4);
// TreeSet gets the value of hashSet
TreeSet myTreeSet = new TreeSet();
myTreeSet.addAll(number);
System.out.println(myTreeSet);
}
}
Producción :
[3, 4, 6]
Utilice la función stream()
para mostrar un conjunto ordenado en Java
Hay una forma concisa de resolver este problema utilizando el método stream()
. La API de transmisión se introdujo en Java 8 y no es una estructura de datos en sí misma. Sin embargo, puede tomar objetos de diferentes colecciones y mostrarlos de la forma deseada según los métodos de canalización.
Usaremos el método sorted()
para mostrar la secuencia final de una manera ordenada para nuestro ejemplo.
Vea el código a continuación.
import java.util.*;
public class example {
public static void main(String[] args) {
// creating hashset hs
HashSet<Integer> hs = new HashSet<>();
// Using add() method to add elements to hs
hs.add(20);
hs.add(4);
hs.add(15);
// before sorting hs
hs.forEach(System.out::println);
System.out.println(); // extra line
// after sorting hs
hs.stream().sorted().forEach(System.out::println); // yes
}
}
Producción :
20
4
15
4
15
20