¿Cómo hacer un bucle sobre TreeSet en Java?

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:

  1. Uso del bucle For mejorado
  2. Usando iterador
  3. 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();
    }
}
Producción

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(", ")));
    }
}
Producción

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

Deja una respuesta

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