Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java EnumMap

Java EnumMap

In deze zelfstudie leren we over de Java EnumMap-klasse en zijn bewerkingen aan de hand van voorbeelden.

De EnumMap klasse van het Java-verzamelingsraamwerk biedt een kaartimplementatie voor elementen van een opsomming.

In EnumMap , enum-elementen worden gebruikt als sleutels . Het implementeert de kaartinterface.

Voordat we meer te weten komen over EnumMap , zorg ervoor dat u op de hoogte bent van de Java Enums.


Een EnumMap maken

Om een ​​enum-kaart te maken, moeten we de java.util.EnumMap . importeren pakket eerst. Zodra we het pakket hebben geïmporteerd, kunnen we als volgt enum-kaarten maken in Java.

enum Size {
    SMALL, MEDIUM, LARGE, EXTRALARGE
}

EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);

In het bovenstaande voorbeeld hebben we een enum-map gemaakt met de naam sizes .

Hier,

  • Maat - toetsen van de opsomming die naar waarden verwijst
  • Geheel getal - waarden van de enum-kaart die is gekoppeld aan de bijbehorende sleutels

Methoden van EnumMap

De EnumMap class biedt methoden waarmee we verschillende elementen op de enum-kaarten kunnen uitvoeren.


Elementen invoegen in EnumMap

  • put() - voegt de opgegeven sleutel/waarde-toewijzing (invoer) toe aan de enum-map
  • putAll() - voegt alle vermeldingen van een gespecificeerde kaart toe aan deze kaart

Bijvoorbeeld,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class);

        // Using the put() Method
        sizes1.put(Size.SMALL, 28);
        sizes1.put(Size.MEDIUM, 32);
        System.out.println("EnumMap1: " + sizes1);

        EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class);

        // Using the putAll() Method
        sizes2.putAll(sizes1);
        sizes2.put(Size.LARGE, 36);
        System.out.println("EnumMap2: " + sizes2);
    }
}

Uitvoer

EnumMap1: {SMALL=28, MEDIUM=32}
EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36}

In het bovenstaande voorbeeld hebben we de putAll() . gebruikt methode om alle elementen van een enum map in te voegen sizes1 naar een overzichtskaart van sizes2 .

Het is ook mogelijk om elementen van andere kaarten in te voegen, zoals HashMap , TreeMap , etc. naar een enum-kaart met behulp van putAll() . Alle kaarten moeten echter van hetzelfde enum-type zijn.


Toegang tot EnumMap-elementen

1. Gebruik entrySet(), keySet() en values()

  • entrySet() - retourneert een set van alle sleutels/waarden mapping (invoer) van een enum map
  • keySet() - geeft een set van alle sleutels van een enum-map terug
  • values() - geeft een set van alle waarden van een enum-map terug

Bijvoorbeeld,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the entrySet() Method
        System.out.println("Key/Value mappings: " + sizes.entrySet());

        // Using the keySet() Method
        System.out.println("Keys: " + sizes.keySet());

        // Using the values() Method
        System.out.println("Values: " + sizes.values());
    }
}

Uitvoer

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Key/Value mappings: [SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40]
Keys: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Values: [28, 32, 36, 40]

2. De get()-methode gebruiken

De get() methode retourneert de waarde die is gekoppeld aan de opgegeven sleutel. Het retourneert null als de opgegeven sleutel niet wordt gevonden.

Bijvoorbeeld,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the get() Method
        int value = sizes.get(Size.MEDIUM);
        System.out.println("Value of MEDIUM: " + value);
    }
}

Uitvoer

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Value of MEDIUM: 32

EnumMap-elementen verwijderen

  • remove(key) - retourneert en verwijdert de invoer die is gekoppeld aan de opgegeven sleutel van de kaart
  • remove(key, value) - verwijdert het item alleen van de kaart als de opgegeven sleutel is toegewezen aan de opgegeven waarde en retourneert een booleaanse waarde

Bijvoorbeeld,

import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the remove() Method
        int value = sizes.remove(Size.MEDIUM);
        System.out.println("Removed Value: " + value);

        boolean result = sizes.remove(Size.SMALL, 28);
        System.out.println("Is the entry {SMALL=28} removed? " + result);

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

Uitvoer

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
Removed Value: 32
Is the entry {SMALL=28} removed? True
Updated EnumMap: {LARGE=36, EXTRALARGE=40}

EnumMap-elementen vervangen

  • replace(key, value) - vervangt de waarde die is gekoppeld aan de opgegeven sleutel door de nieuwe waarde
  • replace(key, old, new) - vervangt de oude waarde met de nieuwe waarde alleen als de oude waarde is al gekoppeld aan de opgegeven sleutel
  • replaceAll(function) - vervangt elke waarde van de kaart door het resultaat van de gespecificeerde functie
import java.util.EnumMap;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    public static void main(String[] args) {

        // Creating an EnumMap of the Size enum
        EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
        sizes.put(Size.SMALL, 28);
        sizes.put(Size.MEDIUM, 32);
        sizes.put(Size.LARGE, 36);
        sizes.put(Size.EXTRALARGE, 40);
        System.out.println("EnumMap: " + sizes);

        // Using the replace() Method
        sizes.replace(Size.MEDIUM, 30);
        sizes.replace(Size.LARGE, 36, 34);
        System.out.println("EnumMap using replace(): " + sizes);

        // Using the replaceAll() Method
        sizes.replaceAll((key, oldValue) -> oldValue + 3);
        System.out.println("EnumMap using replaceAll(): " + sizes);
    }
}

Uitvoer

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40}
EnumMap using replace(): {SMALL=28, MEDIUM=30, LARGE=34, EXTRALARGE=40}
EnumMap using replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43}

Let in het bovenstaande programma op de verklaring

sizes.replaceAll((key, oldValue) -> oldValue + 3);

Hier heeft de methode toegang tot alle items van de kaart. Vervolgens worden alle waarden vervangen door de nieuwe waarden die door de lambda-expressies worden geleverd.


Andere methoden

Methode Beschrijving
clone() Maakt een kopie van de EnumMap
containsKey() Zoekt de EnumMap voor de opgegeven sleutel en geeft een booleaans resultaat
containsValue() Zoekt de EnumMap voor de opgegeven waarde en geeft een booleaans resultaat
size() Retourneert de grootte van de EnumMap
clear() Verwijdert alle vermeldingen van de EnumMap

EnumSet Vs. EnumMap

Zowel de EnumSet als EnumMap class biedt gegevensstructuren om opsommingswaarden op te slaan. Er bestaan ​​echter enkele grote verschillen tussen hen.

  • Enum-set wordt intern weergegeven als een reeks bits, terwijl de enum-map intern wordt weergegeven als arrays.
  • Enum-set wordt gemaakt met behulp van de vooraf gedefinieerde methoden zoals allOf() , noneOf() , of() , enz. Er wordt echter een enum-kaart gemaakt met behulp van zijn constructor.

Klonbare en serialiseerbare interfaces

De EnumMap class implementeert ook Cloneable en Serializable interfaces.

Kloonbare interface

Het staat de EnumMap class om een ​​kopie te maken van instanties van de class.

Serializeerbare interface

Wanneer Java-objecten via een netwerk moeten worden verzonden, moeten objecten worden omgezet in bits of bytes. Dit komt omdat Java-objecten niet via het netwerk kunnen worden verzonden.

De Serializable interface maakt het mogelijk klassen te serialiseren. Dit betekent objecten van de klassen die Serializable . implementeren kan worden omgezet in bits of bytes.


Java

  1. C opsommingen
  2. Java-operators
  3. Java-opmerkingen
  4. Java voor elke lus
  5. Java-strings
  6. Java-interface
  7. Java anonieme klasse
  8. Java-opsommingen
  9. Java enum Constructor
  10. Java enum Strings
  11. Java proberen-met-bronnen