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

Dominando Java EnumMap: Mapeamento Chave-Valor Eficiente com Enums

Java EnumMap

Neste tutorial, aprenderemos sobre a classe Java EnumMap e suas operações com a ajuda de exemplos.

A classe EnumMap do framework de coleções do Java fornece uma implementação de mapa para elementos de um enum.

No EnumMap, elementos de enum são usados como chaves. Ela implementa a interface Map.

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

Criando um EnumMap

Para criar um enum map, devemos importar o pacote java.util.EnumMap primeiro. Uma vez importado, aqui está como podemos criar enum maps no Java.

enum Tamanho { PEQUENO, MEDIO, GRANDE, EXTRAGRANDE }
EnumMap<Tamanho, Integer> tamanhos = new EnumMap<>(Tamanho.class);

No exemplo acima, criamos um enum map chamado tamanhos.

Aqui,

Métodos do EnumMap

A classe EnumMap fornece métodos que nos permitem realizar várias operações nos enum maps.

Inserir Elementos no EnumMap

Por exemplo,

import java.util.EnumMap;
class Main {
    enum Tamanho { PEQUENO, MEDIO, GRANDE, EXTRAGRANDE }
    public static void main(String[] args) {
        // Criando um EnumMap do enum Tamanho
        EnumMap<Tamanho, Integer> tamanhos1 = new EnumMap<>(Tamanho.class);
        // Usando o método put()
        tamanhos1.put(Tamanho.PEQUENO, 28);
        tamanhos1.put(Tamanho.MEDIO, 32);
        System.out.println("EnumMap1: " + tamanhos1);
        EnumMap<Tamanho, Integer> tamanhos2 = new EnumMap<>(Tamanho.class);
        // Usando o método putAll()
        tamanhos2.putAll(tamanhos1);
        tamanhos2.put(Tamanho.GRANDE, 36);
        System.out.println("EnumMap2: " + tamanhos2);
    }
}

Saída

EnumMap1: {PEQUENO=28, MEDIO=32} EnumMap2: {PEQUENO=28, MEDIO=32, GRANDE=36}

No exemplo acima, usamos o método putAll() para inserir todos os elementos de um enum map tamanhos1 em um enum map de tamanhos2.

Também é possível inserir elementos de outros mapas como HashMap, TreeMap, etc. em um enum map usando putAll(). No entanto, todos os mapas devem ser do mesmo tipo de enum.

Acessar Elementos do EnumMap

1. Usando entrySet(), keySet() e values()

Por exemplo,

import java.util.EnumMap;
class Main {
    enum Tamanho { PEQUENO, MEDIO, GRANDE, EXTRAGRANDE }
    public static void main(String[] args) {
        // Criando um EnumMap do enum Tamanho
        EnumMap<Tamanho, Integer> tamanhos = new EnumMap<>(Tamanho.class);
        tamanhos.put(Tamanho.PEQUENO, 28);
        tamanhos.put(Tamanho.MEDIO, 32);
        tamanhos.put(Tamanho.GRANDE, 36);
        tamanhos.put(Tamanho.EXTRAGRANDE, 40);
        System.out.println("EnumMap: " + tamanhos);
        // Usando o método entrySet()
        System.out.println("Mapeamentos Chave/Valor: " + tamanhos.entrySet());
        // Usando o método keySet()
        System.out.println("Chaves: " + tamanhos.keySet());
        // Usando o método values()
        System.out.println("Valores: " + tamanhos.values());
    }
}

Saída

EnumMap: {PEQUENO=28, MEDIO=32, GRANDE=36, EXTRAGRANDE=40} Mapeamentos Chave/Valor: [PEQUENO=28, MEDIO=32, GRANDE=36, EXTRAGRANDE=40] Chaves: [PEQUENO, MEDIO, GRANDE, EXTRAGRANDE] Valores: [28, 32, 36, 40]

2. Usando o Método get()

O método get() retorna o valor associado com a chave especificada. Retorna null se a chave especificada não for encontrada.

Por exemplo,

import java.util.EnumMap;
class Main {
    enum Tamanho { PEQUENO, MEDIO, GRANDE, EXTRAGRANDE }
    public static void main(String[] args) {
        // Criando um EnumMap do enum Tamanho
        EnumMap<Tamanho, Integer> tamanhos = new EnumMap<>(Tamanho.class);
        tamanhos.put(Tamanho.PEQUENO, 28);
        tamanhos.put(Tamanho.MEDIO, 32);
        tamanhos.put(Tamanho.GRANDE, 36);
        tamanhos.put(Tamanho.EXTRAGRANDE, 40);
        System.out.println("EnumMap: " + tamanhos);
        // Usando o método get()
        int valor = tamanhos.get(Tamanho.MEDIO);
        System.out.println("Valor de MEDIO: " + valor);
    }
}

Saída

EnumMap: {PEQUENO=28, MEDIO=32, GRANDE=36, EXTRAGRANDE=40} Valor de MEDIO: 32

Remover Elementos do EnumMap

Por exemplo,

import java.util.EnumMap;
class Main {
    enum Tamanho { PEQUENO, MEDIO, GRANDE, EXTRAGRANDE }
    public static void main(String[] args) {
        // Criando um EnumMap do enum Tamanho
        EnumMap<Tamanho, Integer> tamanhos = new EnumMap<>(Tamanho.class);
        tamanhos.put(Tamanho.PEQUENO, 28);
        tamanhos.put(Tamanho.MEDIO, 32);
        tamanhos.put(Tamanho.GRANDE, 36);
        tamanhos.put(Tamanho.EXTRAGRANDE, 40);
        System.out.println("EnumMap: " + tamanhos);
        // Usando o método remove()
        int valor = tamanhos.remove(Tamanho.MEDIO);
        System.out.println("Valor Removido: " + valor);
        boolean resultado = tamanhos.remove(Tamanho.PEQUENO, 28);
        System.out.println("A entrada {PEQUENO=28} foi removida? " + resultado);
        System.out.println("EnumMap Atualizado: " + tamanhos);
    }
}

Saída

EnumMap: {PEQUENO=28, MEDIO=32, GRANDE=36, EXTRAGRANDE=40} Valor Removido: 32 A entrada {PEQUENO=28} foi removida? true EnumMap Atualizado: {GRANDE=36, EXTRAGRANDE=40}

Substituir Elementos do EnumMap

import java.util.EnumMap;
class Main {
    enum Tamanho { PEQUENO, MEDIO, GRANDE, EXTRAGRANDE }
    public static void main(String[] args) {
        // Criando um EnumMap do enum Tamanho
        EnumMap<Tamanho, Integer> tamanhos = new EnumMap<>(Tamanho.class);
        tamanhos.put(Tamanho.PEQUENO, 28);
        tamanhos.put(Tamanho.MEDIO, 32);
        tamanhos.put(Tamanho.GRANDE, 36);
        tamanhos.put(Tamanho.EXTRAGRANDE, 40);
        System.out.println("EnumMap: " + tamanhos);
        // Usando o método replace()
        tamanhos.replace(Tamanho.MEDIO, 30);
        tamanhos.replace(Tamanho.GRANDE, 36, 34);
        System.out.println("EnumMap usando replace(): " + tamanhos);
        // Usando o método replaceAll()
        tamanhos.replaceAll((chave, valorAntigo) -> valorAntigo + 3);
        System.out.println("EnumMap usando replaceAll(): " + tamanhos);
    }
}

Saída

EnumMap: {PEQUENO=28, MEDIO=32, GRANDE=36, EXTRAGRANDE=40} EnumMap usando replace(): {PEQUENO=28, MEDIO=30, GRANDE=34, EXTRAGRANDE=40} EnumMap usando replaceAll(): {PEQUENO=31, MEDIO=33, GRANDE=37, EXTRAGRANDE=43}

No programa acima, observe a declaração

tamanhos.replaceAll((chave, valorAntigo) -> valorAntigo + 3);

Aqui, o método acessa todas as entradas do mapa. Ele então substitui todos os valores com os novos valores fornecidos pelas expressões lambda.

Outros Métodos

MétodoDescrição
clone()Cria uma cópia do EnumMap
containsKey()Busca o EnumMap pela chave especificada e retorna resultado booleano
containsValue()Busca o EnumMap pelo valor especificado e retorna resultado booleano
size()Retorna o tamanho do EnumMap
clear()Remove todas as entradas do EnumMap

EnumSet Vs. EnumMap

Tanto o EnumSet quanto a classe EnumMap fornecem estruturas de dados para armazenar valores de enum. No entanto, existem algumas diferenças principais entre eles.

Interfaces Cloneable e Serializable

A classe EnumMap também implementa as interfaces Cloneable e Serializable.

Interface Cloneable

Permite que a classe EnumMap faça uma cópia de instâncias da classe.

Interface Serializable

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

A interface Serializable permite que classes sejam serializadas. Isso significa que objetos de classes implementando Serializable podem ser convertidos em bits ou bytes.

Java

  1. Dominando Enums em C: Definição, Declaração e Operações de Flags
  2. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  3. Comentários em Java: Tipos, Uso e Boas Práticas
  4. Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
  5. Dominando Strings em Java: Criação, Métodos e Boas Práticas
  6. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  7. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  8. Dominando Enums em Java: Guia Completo de Enums e Enum Classes
  9. Construtores de Enum em Java Explicados com Exemplo Prático
  10. Dominando Representações String em Enums Java