Diferencia entre EnumMap y EnumSet en Java

EnumMap y EnumSet son las clases definidas dentro de la colección java . En este artículo, aprenderemos las diferencias entre EnumMap y EnumSet. EnumMap es la implementación especializada de la interfaz Map y EnumSet es la implementación especializada de la interfaz Set . Hay algunas diferencias que existen entre ellos. Así que hemos tratado de enumerar las diferencias entre EnumMap y EnumSet.

1. EnumMap : EnumMap es una implementación especializada de la interfaz Map para tipos de enumeración . Implementa la interfaz Map y extiende AbstractMap en Java.

  • EnumMap es mucho más rápido que HashMap .
  • La clase EnumMap es miembro de Java Collections Framework .
  • EnumMap es una colección ordenada mantenida en el orden natural de sus claves.
  • Todas las claves de cada instancia de EnumMap deben ser claves del mismo tipo de enumeración .
  • EnumMap no permite insertar una clave nula si intentamos insertar la clave nula, lanzará NullPointerException .
  • EnumMap representado internamente como arrays para un mejor rendimiento.

A continuación se muestra la implementación de EnumMap:

Java

// Java program to illustrate working of EnumMap
  
import java.util.*;
  
class EnumMapExample {
  
    public enum Fruits {
        Apple,
        Mango,
        Orange,
        Banana;
    }
  
    public static void main(String[] args)
    {
        // Creating an EnumMap of the Fruits enum
        EnumMap<Fruits, Integer> enumMap
            = new EnumMap<>(Fruits.class);
  
        // Insert using put() method
        enumMap.put(Fruits.Apple, 1);
        enumMap.put(Fruits.Mango, 2);
        enumMap.put(Fruits.Orange, 3);
        enumMap.put(Fruits.Banana, 4);
  
        // Printing size of EnumMap
        System.out.println("Size of EnumMap: "
                           + enumMap.size());
        // Printing the EnumMap
        for (Map.Entry m : enumMap.entrySet()) {
            System.out.println(m.getKey() + " "
                               + m.getValue());
        }
    }
}
Producción

Size of EnumMap: 4
Apple 1
Mango 2
Orange 3
Banana 4

2. EnumSet : EnumSet es una implementación especializada de la interfaz Set para tipos de enumeración . Implementa la interfaz Set y extiende AbstractSet en Java. 

  • 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 .

A continuación se muestra la implementación de EnumSet:

Java

// Java program to demonstrate the EnumSet
  
import java.util.*;
class enumSetExample {
    enum Days {
        Sunday,
        Monday,
        Tuesday,
        Wendensday,
        Thursday
    }
    public static void main(String args[])
    {
  
        // Creating an EnumSet
        EnumSet<Days> days
            = EnumSet.of(Days.Monday, Days.Tuesday);
  
        Iterator<Days> itr = days.iterator();
  
        // Iterate and print elements
        // to the console
        System.out.println("EnumSet : ");
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }
    }
}
Producción

EnumSet : 
Monday
Tuesday

Diferencia entre EnumMap y EnumSet

                                 EnumMap                              EnumSet
EnumMap es una implementación especializada de la interfaz Map para los tipos de enumeración. EnumSet es una implementación especializada de la interfaz Set para los tipos de enumeración.
EnumMap se representa internamente como una array. EnumSet se representa internamente como un BitVector.
EnumMap no permite insertar claves nulas, sin embargo, se pueden insertar valores nulos. EnumSet no permite insertar elementos nulos.
EnumMap no es una clase abstracta. EnumSet es una clase abstracta.
EnumMap no es una clase abstracta, por lo tanto, podemos crear una instancia de esta clase. EnumSet es una clase abstracta, por lo tanto, no podemos crear la instancia de esta clase.

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 *