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()); } } }
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()); } } }
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