Post Top Ad

Your Ad Spot

domingo, 22 de diciembre de 2019

Java EnumSet

En este tutorial, aprenderemos sobre la clase Java EnumSet y sus diversos métodos con la ayuda de ejemplos.
anuncios a través de carbono¿Busca trabajo impactante, proyectos desafiantes + un equipo diverso? Codifica con nosotros.ANUNCIOS A TRAVÉS DE CARBONO
La EnumSetclase del marco de colecciones de Java proporciona una implementación establecida de elementos de una sola enumeración.
Antes de aprender sobre EnumSet, asegúrese de saber sobre Java Enums .
Implementa la interfaz Set .
La clase Java EnumSet implementa la interfaz Java Set.

Creando EnumSet

Para crear un conjunto de enumeraciones, java.util.EnumSetprimero debemos importar el paquete.
A diferencia de otras implementaciones de conjuntos, el conjunto de enumeraciones no tiene constructores públicos. Debemos usar los métodos predefinidos para crear un conjunto de enumeraciones.

1. Usando allOf (Tamaño)

El allof()método crea un conjunto de enumeraciones que contiene todos los valores del tipo de enumeración especificado Tamaño . Por ejemplo,
  1. import java.util.EnumSet;
  2. class Main {
  3. // an enum named Size
  4. enum Size {
  5. SMALL, MEDIUM, LARGE, EXTRALARGE
  6. }
  7. public static void main(String[] args) {
  8. // Creating an EnumSet using allOf()
  9. EnumSet<Size> sizes = EnumSet.allOf(Size.class);
  10. System.out.println("EnumSet: " + sizes);
  11. }
  12. }
Salida
EnumSet: [PEQUEÑO, MEDIO, GRANDE, EXTRALARGE]
Note la declaración,
  1. EnumSet<Size> sizes = EnumSet.allOf(Size.class);
Aquí, Size.class denota la enumeración de tamaño que hemos creado.

2. Usando noneOf (Tamaño)

El noneOf()método crea un conjunto de enumeraciones vacío. Por ejemplo,
  1. import java.util.EnumSet;
  2. class Main {
  3. // an enum type Size
  4. enum Size {
  5. SMALL, MEDIUM, LARGE, EXTRALARGE
  6. }
  7. public static void main(String[] args) {
  8. // Creating an EnumSet using noneOf()
  9. EnumSet<Size> sizes = EnumSet.noneOf(Size.class);
  10. System.out.println("Empty EnumSet: " + sizes);
  11. }
  12. }
Salida
EnumSet vacío: []
Aquí, hemos creado una enumeración vacía llamada tamaños .
Nota : Solo podemos insertar elementos de tipo enum Size en el programa anterior. Es porque creamos nuestro conjunto de enumeraciones vacío usando Size enum.

3. Uso del método de rango (e1, e2)

El range()método crea un conjunto de enumeraciones que contiene todos los valores de una enumeración entre e1 y e2, incluidos ambos valores. Por ejemplo,
  1. import java.util.EnumSet;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating an EnumSet using range()
  8. EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE);
  9. System.out.println("EnumSet: " + sizes);
  10. }
  11. }
Salida
EnumSet: [MEDIO, GRANDE, EXTRALARGE]

4. Uso del método ()

El of()método crea un conjunto de enumeraciones que contiene los elementos especificados. Por ejemplo,
  1. import java.util.EnumSet;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Using of() with a single parameter
  8. EnumSet<Size> sizes1 = EnumSet.of(Size.MEDIUM);
  9. System.out.println("EnumSet1: " + sizes1);
  10. EnumSet<Size> sizes2 = EnumSet.of(Size.SMALL, Size.LARGE);
  11. System.out.println("EnumSet2: " + sizes2);
  12. }
  13. }
Salida
EnumSet1: [MEDIO]
EnumSet2: [PEQUEÑO, GRANDE]

Métodos de EnumSet

La EnumSetclase proporciona métodos que nos permiten realizar varios elementos en el conjunto de enumeraciones.

Insertar elementos en EnumSet

  • add() - inserta valores de enumeración especificados en el conjunto de enumeraciones
  • addAll() inserta todos los elementos de la colección especificada en el conjunto
Por ejemplo,
  1. import java.util.EnumSet;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating an EnumSet using allOf()
  8. EnumSet<Size> sizes1 = EnumSet.allOf(Size.class);
  9. // Creating an EnumSet using noneOf()
  10. EnumSet<Size> sizes2 = EnumSet.noneOf(Size.class);
  11. // Using add method
  12. sizes2.add(Size.MEDIUM);
  13. System.out.println("EnumSet Using add(): " + sizes2);
  14. // Using addAll() method
  15. sizes2.addAll(sizes1);
  16. System.out.println("EnumSet Using addAll(): " + sizes2);
  17. }
  18. }
Salida
EnumSet usando add (): [MEDIO]
EnumSet usando addAll (): [PEQUEÑO, MEDIO, GRANDE, EXTRALARGE]
En el ejemplo anterior, hemos utilizado el addAll()método para insertar todos los elementos de un conjunto de enumeraciones tamaños1 en un conjunto de enumeraciones tamaños2 .
También es posible insertar elementos de otras colecciones como ArrayListLinkedList, etc. a un conjunto de enumeración usando addAll()Sin embargo, todas las colecciones deben ser del mismo tipo de enumeración.

Acceda a elementos EnumSet

Para acceder a los elementos de un conjunto de enumeraciones, podemos usar el iterator()método Para utilizar este método, debemos importar el java.util.Iteratorpaquete. Por ejemplo,
  1. import java.util.EnumSet;
  2. import java.util.Iterator;
  3. class Main {
  4. enum Size {
  5. SMALL, MEDIUM, LARGE, EXTRALARGE
  6. }
  7. public static void main(String[] args) {
  8. // Creating an EnumSet using allOf()
  9. EnumSet<Size> sizes = EnumSet.allOf(Size.class);
  10. Iterator<Size> iterate = sizes.iterator();
  11. System.out.print("EnumSet: ");
  12. while(iterate.hasNext()) {
  13. System.out.print(iterate.next());
  14. System.out.print(", ");
  15. }
  16. }
  17. }
Salida
EnumSet: PEQUEÑO, MEDIO, GRANDE, EXTRALARGE,
Nota :
  • hasNext()devuelve truesi hay un elemento siguiente en el conjunto de enumeraciones
  • next() devuelve el siguiente elemento en el conjunto de enumeraciones

Eliminar elementos EnumSet

  • remove() - elimina el elemento especificado del conjunto de enumeraciones
  • removeAll() - elimina todos los elementos del conjunto de enumeraciones
Por ejemplo,
  1. import java.util.EnumSet;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating EnumSet using allOf()
  8. EnumSet<Size> sizes = EnumSet.allOf(Size.class);
  9. System.out.println("EnumSet: " + sizes);
  10. // Using remove()
  11. boolean value1 = sizes.remove(Size.MEDIUM);
  12. System.out.println("Is MEDIUM removed? " + value1);
  13. // Using removeAll()
  14. boolean value2 = sizes.removeAll(sizes);
  15. System.out.println("Are all elements removed? " + value2);
  16. }
  17. }
Salida
EnumSet: [PEQUEÑO, MEDIO, GRANDE, EXTRALARGE]
¿Se ha eliminado MEDIO? cierto
¿Se eliminan todos los elementos? Cierto

Otros metodos

MétodoDescripción
copyOf()Crea una copia de EnumSet
contains()Busca el EnumSetelemento especificado y devuelve un resultado booleano.
isEmpty()Comprueba si EnumSetestá vacío
size()Devuelve el tamaño de EnumSet
clear()Elimina todos los elementos del EnumSet

Interfaces clonables y serializables

La EnumSetclase también implementa CloneableSerializableinterfaces.
Interfaz clonable
Permite que la EnumSetclase haga una copia de las instancias de la clase.
Interfaz serializable
Siempre que los objetos Java necesiten transmitirse a través de una red, los objetos deben convertirse en bits o bytes. Esto se debe a que los objetos Java no se pueden transmitir a través de la red.
La Serializableinterfaz permite que las clases se serialicen. Esto significa que los objetos de la implementación de clases Serializablese pueden convertir en bits o bytes.

¿Por qué EnumSet?

El EnumSetproporciona una manera eficiente de almacenar los valores de enumeración que otras implementaciones de Programación (como HashSetTreeSet).
Un conjunto de enumeraciones solo almacena valores de enumeraciones de una enumeración específica. Por lo tanto, la JVM ya conoce todos los valores posibles del conjunto.
Esta es la razón por la cual los conjuntos de enumeraciones se implementan internamente como una secuencia de bits. Bits especifica si los elementos están presentes en el conjunto de enumeraciones o no.
El bit de un elemento correspondiente se activa si ese elemento está presente en el conjunto

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas