Diferencia entre EnumSet y TreeSet en Java

EnumSet y TreeSet son las clases definidas dentro del marco de la colección . Pero existen pocas diferencias entre ellos. En este artículo, hemos tratado de cubrir todas estas diferencias entre ellos.

1. EnumSet : EnumSet es una implementación especializada de la interfaz Set para tipos de enumeración . Extiende AbstractSet e implementa la interfaz Set en Java. Algunos puntos importantes de EnumSet son los siguientes: 

  • La clase EnumSet es miembro de Java Collections Framework y no está sincronizada.
  • Todos los elementos de un EnumSet deben provenir de un solo tipo de enumeración que se especifica cuando el conjunto se crea de forma explícita o implícita.
  • EnumSet es mucho más rápido que HashSet .
  • EnumSet no permite insertar un objeto nulo si intentamos insertar el objeto nulo, arrojará NullPointerException .
  • Utiliza un iterador a prueba de fallas , por lo que no generará ConcurrentModificationException si la colección se modifica durante la iteración.

Ejemplo:

Java

// Java program to demonstrate
// the EnumSet
  
import java.util.*;
class enumSetExample {
    enum Colors {
        Red,
        Pink,
        Grey,
        Yellow,
        Green
    }
    public static void main(String args[])
    {
  
        // Creating an EnumSet
        EnumSet<Colors> colors
            = EnumSet.of(Colors.Pink, Colors.Green);
  
        Iterator<Colors> itr = colors.iterator();
  
        // Iterate and print elements to
        // the console
        System.out.println("EnumSet : ");
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
    }
}
Producción

EnumSet : 
Pink
Green

2. TreeSet : TreeSet es una clase que implementa el comparador de interfaz SortedSet Interfaz NavigableSet Clase AbstractSet

Ejemplo:

Java

// Java code to demonstrate 
// the working of TreeSet 
  
import java.util.*; 
class TreeSetDemo { 
  
    public static void main(String[] args) 
    { 
        // Creating an empty TreeSet 
        TreeSet<String> ts = new TreeSet<String>(); 
  
        // Elements are added using add() method 
        ts.add("Geek"); 
        ts.add("For"); 
        ts.add("Geeks"); 
      ts.add("welcomes");
      ts.add("you");
  
        System.out.println("Tree Set is " + ts); 
  
        String check = "welcomes"; 
  
        // Check if the above string exists in 
        // the treeset or not 
        System.out.println("Contains : " + check + " "
                        + ts.contains(check)); 
  
        // Print the first element in 
        // the TreeSet 
        System.out.println("First Value " + ts.first()); 
  
        // Print the last element in 
        // the TreeSet 
        System.out.println("Last Value " + ts.last()); 
  
        String value = "Geek"; 
  
        // Find the values just greater 
        // and smaller than the above string 
        System.out.println("Higher " + ts.higher(value)); 
        System.out.println("Lower " + ts.lower(value)); 
    } 
}
Producción

Tree Set is [For, Geek, Geeks, welcomes, you]
Contains : welcomes true
First Value For
Last Value you
Higher Geeks
Lower For
PROPIEDADES                         EnumSet                           ÁrbolConjunto
Básico EnumSet es una implementación especializada de la interfaz Set. TreeSet es una clase que implementa la interfaz SortedSet en Java.
Estructura de datos Se representa internamente como un BitVector. Se representa internamente como un árbol rojo-negro.
Clasificación Ordena los elementos según el orden natural. Ordena los elementos según el orden de clasificación.
iterador El iterador EnumSet es débilmente consistente. El iterador TreeSet es Fail-fast.
Mejor elección EnumSet es la mejor opción para almacenar elementos de tipo de enumeración. TreeSet sirve como una excelente opción para almacenar grandes cantidades de información ordenada a la que se supone que se debe acceder rápidamente debido a su acceso y tiempo de recuperación más rápidos.

Publicación traducida automáticamente

Artículo escrito por prashant_srivastava 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 *