Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java EnumSet

Conjunto de enumeración de Java

En este tutorial, aprenderemos sobre la clase Java EnumSet y sus diversos métodos con la ayuda de ejemplos.

El EnumSet La clase 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.


Creando EnumSet

Para crear un conjunto de enumeración, debemos importar el java.util.EnumSet paquete primero.

A diferencia de otras implementaciones de conjuntos, el conjunto de enumeración no tiene constructores públicos. Debemos usar los métodos predefinidos para crear un conjunto de enumeración.

1. Usando allOf(Tamaño)

El allof() El método crea un conjunto de enumeración que contiene todos los valores del tipo de enumeración especificado Size . Por ejemplo,

import java.util.EnumSet;

class Main {
    // an enum named Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    
    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        System.out.println("EnumSet: " + sizes);
    }

}

Salida

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]

Note la declaración,

EnumSet<Size> sizes = EnumSet.allOf(Size.class);

Aquí, Tamaño.clase denota el Tamaño enumeración que hemos creado.


2. Usando noneOf(Tamaño)

El noneOf() El método crea un conjunto de enumeración vacío. Por ejemplo,

import java.util.EnumSet;

class Main {

     // an enum type Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes = EnumSet.noneOf(Size.class);

        System.out.println("Empty EnumSet: " + sizes);
    }
}

Salida

Empty EnumSet : []

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 enumeración vacío usando Size enumeración.


3. Usando el método range(e1, e2)

El range() El método crea un conjunto de enumeración que contiene todos los valores de una enumeración entre e1 y e2 incluyendo ambos valores. Por ejemplo,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using range()
        EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE);

        System.out.println("EnumSet: " + sizes);
    }
}

Salida

EnumSet: [MEDIUM, LARGE, EXTRALARGE]

4. Uso del método of()

El of() El método crea un conjunto de enumeración que contiene los elementos especificados. Por ejemplo,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Using of() with a single parameter
        EnumSet<Size> sizes1 = EnumSet.of(Size.MEDIUM);
        System.out.println("EnumSet1: " + sizes1);

        EnumSet<Size> sizes2 = EnumSet.of(Size.SMALL, Size.LARGE);
        System.out.println("EnumSet2: " + sizes2);
    }
}

Salida

EnumSet1: [MEDIUM]
EnumSet2: [SMALL, LARGE]

Métodos de EnumSet

El EnumSet La clase proporciona métodos que nos permiten realizar varios elementos en el conjunto de enumeración.


Insertar elementos en EnumSet

Por ejemplo,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes1 = EnumSet.allOf(Size.class);

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes2 = EnumSet.noneOf(Size.class);

        // Using add method
        sizes2.add(Size.MEDIUM);
        System.out.println("EnumSet Using add(): " + sizes2);

        // Using addAll() method
        sizes2.addAll(sizes1);
        System.out.println("EnumSet Using addAll(): " + sizes2);
    }
}

Salida

EnumSet using add(): [MEDIUM]
EnumSet using addAll(): [SMALL, MEDIUM, LARGE, EXTRALARGE]

En el ejemplo anterior, hemos utilizado el addAll() método para insertar todos los elementos de un conjunto de enumeración sizes1 a un conjunto de enumeración sizes2 .

También es posible insertar elementos de otras colecciones como ArrayList , LinkedList , etc. a un conjunto de enumeración usando addAll() . Sin embargo, todas las colecciones deben ser del mismo tipo de enumeración.


Acceso a elementos de EnumSet

Para acceder a los elementos de un conjunto de enumeración, podemos usar el iterator() método. Para usar este método, debemos importar el java.util.Iterator paquete. Por ejemplo,

import java.util.EnumSet;
import java.util.Iterator;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        Iterator<Size> iterate = sizes.iterator();

        System.out.print("EnumSet: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Salida

EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,

Nota :


Eliminar elementos de EnumSet

Por ejemplo,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);
        System.out.println("EnumSet: " + sizes);

        // Using remove()
        boolean value1 = sizes.remove(Size.MEDIUM);
        System.out.println("Is MEDIUM removed? " + value1);

        // Using removeAll()
        boolean value2 = sizes.removeAll(sizes);
        System.out.println("Are all elements removed? " + value2);
    }
}

Salida

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Is MEDIUM removed? true
Are all elements removed? true

Otros métodos

Método Descripción
copyOf() Crea una copia del EnumSet
contains() Busca el EnumSet para el elemento especificado y devuelve un resultado booleano
isEmpty() Comprueba si EnumSet está vacío
size() Devuelve el tamaño del EnumSet
clear() Elimina todos los elementos del EnumSet

Interfaces clonables y serializables

El EnumSet la clase también implementa Cloneable y Serializable interfaces.

Interfaz clonable

Permite el EnumSet class para hacer una copia de las instancias de la clase.

Interfaz serializable

Cada vez que los objetos de Java deben 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.

El Serializable La interfaz permite serializar las clases. Esto significa objetos de las clases que implementan Serializable se puede convertir en bits o bytes.


¿Por qué EnumSet?

El EnumSet proporciona una forma eficiente de almacenar valores de enumeración que otras implementaciones de conjuntos (como HashSet , TreeSet ).

Un conjunto de enumeración solo almacena valores de enumeración 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 enumeración se implementan internamente como una secuencia de bits. Bits especifica si los elementos están presentes en el conjunto de enumeración o no.

El bit de un elemento correspondiente se activa si ese elemento está presente en el conjunto.


Java

  1. Operadores Java
  2. Comentarios Java
  3. Java para cada bucle
  4. Cadenas Java
  5. Interfaz Java
  6. Clase anónima de Java
  7. enumeraciones de Java
  8. Constructor de enumeración de Java
  9. Prueba de Java con recursos
  10. Anotaciones Java
  11. Aserciones de Java