Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java EnumSet

Java EnumSet


Neste tutorial, aprenderemos sobre a classe Java EnumSet e seus vários métodos com a ajuda de exemplos.

O EnumSet A classe da estrutura de coleções Java fornece uma implementação de conjunto de elementos de uma única enumeração.

Antes de aprender sobre EnumSet, certifique-se de conhecer Java Enums.

Ele implementa a interface Set.



Criando EnumSet


Para criar um conjunto enum, devemos importar o java.util.EnumSet pacote primeiro.

Ao contrário de outras implementações de conjuntos, o conjunto enum não possui construtores públicos. Devemos usar os métodos predefinidos para criar um conjunto enum.

1. Usando allOf(Size)


O allof() O método cria um conjunto de enumerações que contém todos os valores do tipo de enumeração especificado Tamanho . Por exemplo,
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);
    }

}

Saída
EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]

Observe a afirmação,
EnumSet<Size> sizes = EnumSet.allOf(Size.class);

Aqui, Tamanho.class denota o Tamanho enum que criamos.

2. Usando noneOf(Tamanho)


O noneOf() O método cria um conjunto enum vazio. Por exemplo,
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);
    }
}

Saída
Empty EnumSet : []

Aqui, criamos um enum vazio chamado sizes .

Observação :Só podemos inserir elementos do tipo enum Size no programa acima. É porque criamos nosso conjunto enum vazio usando Size enum.

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


O range() O método cria um conjunto de enumerações contendo todos os valores de uma enumeração entre e1 e e2 incluindo ambos os valores. Por exemplo,
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);
    }
}

Saída
EnumSet: [MEDIUM, LARGE, EXTRALARGE]

4. Usando o método of()


O of() O método cria um conjunto enum contendo os elementos especificados. Por exemplo,
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);
    }
}

Saída
EnumSet1: [MEDIUM]
EnumSet2: [SMALL, LARGE]

Métodos de EnumSet


O EnumSet class fornece métodos que nos permitem executar vários elementos no conjunto enum.

Inserir elementos no EnumSet


Por exemplo,
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);
    }
}



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

No exemplo acima, usamos o addAll() método para inserir todos os elementos de um conjunto enum sizes1 para um conjunto enum sizes2 .

Também é possível inserir elementos de outras coleções como ArrayList , LinkedList , etc. para um conjunto de enumeração usando addAll() . No entanto, todas as coleções devem ser do mesmo tipo de enumeração.

Acessar elementos do EnumSet


Para acessar elementos de um conjunto enum, podemos usar o iterator() método. Para usar este método, devemos importar o java.util.Iterator pacote. Por exemplo,
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(", ");
        }
    }
}

Saída
EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,

Observação :

Remover elementos do EnumSet


Por exemplo,
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);
    }
}

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

Outros métodos

Método Descrição
copyOf() Cria uma cópia do EnumSet
contains() Pesquisa o EnumSet para o elemento especificado e retorna um resultado booleano
isEmpty() Verifica se o EnumSet está vazio
size() Retorna o tamanho do EnumSet
clear() Remove todos os elementos do EnumSet

Interfaces clonáveis ​​e serializáveis


O EnumSet classe também implementa Cloneable e Serializable interfaces.

Interface Clonável

Ele permite que o EnumSet class para fazer uma cópia das instâncias da classe.

Interface serializável

Sempre que os objetos Java precisam ser transmitidos por uma rede, os objetos precisam ser convertidos em bits ou bytes. Isso ocorre porque os objetos Java não podem ser transmitidos pela rede.

O Serializable interface permite que as classes sejam serializadas. Isso significa que os objetos das classes que implementam Serializable podem ser convertidos em bits ou bytes.

Por que EnumSet?


O EnumSet fornece uma maneira eficiente de armazenar valores de enumeração do que outras implementações de conjunto (como HashSet , TreeSet ).

Um conjunto de enum armazena apenas valores de enum de um enum específico. Portanto, a JVM já conhece todos os valores possíveis do conjunto.

Esta é a razão pela qual os conjuntos de enum são implementados internamente como uma sequência de bits. Bits especifica se os elementos estão presentes no conjunto enum ou não.

O bit de um elemento correspondente é ativado se esse elemento estiver presente no conjunto.

Java

  1. Operadores Java
  2. Comentários Java
  3. Java para cada loop
  4. Strings Java
  5. Classe anônima Java
  6. Enumerações Java
  7. Construtor de enumeração Java
  8. Java try-with-resources
  9. Anotações Java
  10. Asserções Java