TreeSet es una de las implementaciones más importantes de la interfaz SortedSet en Java que utiliza un árbol para el almacenamiento. El orden de los elementos se mantiene mediante un conjunto utilizando su orden natural, se proporcione o no un comparador explícito . Esto debe ser consistente con equals si se quiere implementar correctamente la interfaz Set .
Ahora la tarea es explorar cuántas formas hay para recorrer TreeSet. Como todos sabemos , TreeSet proporciona una implementación de la interfaz SortedSet y SortedSet amplía la interfaz Set. Se comporta como un conjunto simple con la excepción de que almacena elementos en un formato ordenado.
Los siguientes son algunos rasgos asociados con TreeSet que son los siguientes:
- TreeSet utiliza una estructura de datos de árbol para el almacenamiento.
- Los objetos se almacenan en orden ascendente ordenado. Pero podemos iterar en orden descendente usando el método TreeSet.descendingIterator().
- Los tiempos de acceso y recuperación son muy rápidos, lo que convierte a TreeSet en una excelente opción para el almacenamiento de grandes volúmenes de datos en un formato ordenado.
- TreeSet no usa los métodos hashCode() y equals() para comparar sus elementos. Utiliza el método compare() (o compareTo()) para determinar la igualdad de dos elementos.
Métodos:
A continuación, enumeramos varias formas de iterar sobre TreeSet en Java, que discutiremos más adelante y proporcionaremos un programa Java limpio para cada uno de los siguientes métodos de la siguiente manera:
- Uso del bucle For mejorado
- Usando iterador
- Usando flujos (desde Java8 en adelante)
Método 1: usar el bucle For mejorado
El bucle For mejorado se puede usar para recorrer el TreeSet de la siguiente manera.
Sintaxis:
for (Integer value : ts) { System.out.print(value); }
Ejemplo
Java
// Java Program to Loop over TreeSet // Using Enhanced For loop // Importing required classes import java.util.Iterator; import java.util.TreeSet; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Creating an empty TreeSet by // declaring object of TreeSet class of Integer type TreeSet<Integer> ts = new TreeSet<Integer>(); // Adding elements to above TreeSet object ts.add(10); ts.add(61); ts.add(87); ts.add(39); // Display message for better readability System.out.print("TreeSet: "); // Looping over the TreeSet values for (Integer value : ts) // Print the values System.out.print(value + ", "); System.out.println(); } }
TreeSet: 10, 39, 61, 87,
Método 2: usar el iterador
El iterador se puede crear sobre los objetos TreeSet. Por lo tanto, este iterador se puede usar para recorrer o recorrer el TreeSet.
Sintaxis:
Iterator iterator = ts.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next()); }
Ejemplo
Java
// Java program to loop over TreeSet // Using Iterator // Importing required classes import java.util.Iterator; import java.util.TreeSet; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Creating an empty TreeSet by // declaring an object of TreeSet class TreeSet<Integer> ts = new TreeSet<Integer>(); // Adding elements to above object of TreeSet class // Using add() method ts.add(10); ts.add(61); ts.add(87); ts.add(39); // Create an Iterator over the TreeSet Iterator<Integer> iterator = ts.iterator(); // Display message for better readability System.out.print("TreeSet: "); // Looping over the TreeSet values while (iterator.hasNext()) // Print all the values inside TreeSet object System.out.print(iterator.next() + ", "); System.out.println(); } }
Método 3: Uso de Java 8 forEach/stream :
Java 8 forEach / stream se puede usar para recorrer el TreeSet de la siguiente manera.
Sintaxis:
Tree_Set.forEach(iterator -> System.out.print(i + " ")); // Using forEach
Tree_Set.stream().map(iterator -> String.valueOf(i)).collect(Collectors.joining(", ")) // Using stream
Ejemplo
Java
// Java program to loop over TreeSet // Using For-each and Stream in Java8 // Importing required classes import java.util.Arrays; import java.util.Iterator; import java.util.TreeSet; import java.util.stream.Collectors; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Creating an empty TreeSet if integer type TreeSet<Integer> ts = new TreeSet<Integer>(); // Adding elements to the TreeSet // using addAll() method ts.addAll(Arrays.asList(10, 61, 87, 39)); // Looping over the TreeSet & print values System.out.print("TreeSet without Comma: "); // Iterating through the TreeSet // using forEach ts.forEach(i -> System.out.print(i + " ")); System.out.println(); // Looping over the TreeSet & print values System.out.print("TreeSet with Comma: "); // Iterating through the TreeSet // Using stream concept introduced in Java8 System.out.print( ts.stream() .map(i -> String.valueOf(i)) .collect(Collectors.joining(", "))); } }
TreeSet without Comma: 10 39 61 87 TreeSet with Comma: 10, 39, 61, 87
Publicación traducida automáticamente
Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA