„Java Enum“ žemėlapis

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java EnumMap“ klasę ir jos operacijas.

EnumMapJava“ kolekcijų sistemos klasėje pateikiamas „enum“ elementų žemėlapių įgyvendinimas.

EnumMapEnum“ elementai naudojami kaip raktai . Tai įgyvendina žemėlapio sąsają.

Prieš sužinodami apie tai EnumMap, būtinai žinokite apie „Java Enums“.

„EnumMap“ kūrimas

Norėdami sukurti „enum“ žemėlapį, pirmiausia turime importuoti java.util.EnumMappaketą. Kai importuosime paketą, galime sukurti „Java“ enum žemėlapius.

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) EnumMap sizes = new EnumMap(Size.class); 

Ankstesniame pavyzdyje mes sukūrėme enum žemėlapį, pavadintą dydžiais.

Čia

  • Dydis - reikšmių susiejimo klavišai
  • Sveikasis skaičius - su atitinkamais klavišais susietos skaičiaus reikšmės

„EnumMap“ metodai

EnumMapKlasė suteikia metodus, kurie leidžia mums atlikti įvairius elementus ENUM žemėlapius.

Įterpti elementus į „EnumMap“

  • put() - įterpia nurodytą raktų / reikšmių atvaizdavimą (įrašą) į enum žemėlapį
  • putAll() - įterpia visus nurodyto žemėlapio įrašus į šį žemėlapį

Pavyzdžiui,

 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 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 sizes2 = new EnumMap(Size.class); // Using the putAll() Method sizes2.putAll(sizes1); sizes2.put(Size.LARGE, 36); System.out.println("EnumMap2: " + sizes2); ) ) 

Rezultatas

 „EnumMap1“: (MAŽAS = 28, VIDUTINIS = 32) „EnumMap2“: (MAŽAS = 28, VIDUTINIS = 32, DIDELIS = 36) 

Ankstesniame pavyzdyje mes naudojome putAll()metodą, įterpdami visus enum žemėlapio dydžių1 elementus į enum žemėlapį2.

Taip pat galima įterpti elementų iš kitų žemėlapių, pavyzdžiui HashMap, TreeMapir tt į ENUM žemėlapyje naudojant putAll(). Tačiau visi žemėlapiai turėtų būti to paties tipo.

Prieiga prie „EnumMap Elements“

1. Naudodami „entrySet“ (), „keySet“ () ir reikšmes ()

  • entrySet() - pateikia visų enum žemėlapio raktų / verčių susiejimo (įrašo) rinkinį
  • keySet() - pateikia visų enum žemėlapio raktų rinkinį
  • values() - pateikia visų enum žemėlapio reikšmių rinkinį

Pavyzdžiui,

 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 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()); ) ) 

Rezultatas

 „EnumMap“: (MAŽAS = 28, VIDUTINIS = 32, DIDELIS = 36, PAPILDOMAS = 40) Raktų / reikšmių susiejimas: (MAŽAS = 28, VIDUTINIS = 32, DIDELIS = 36, PAPILDOMAS = 40) Raktai: (MAŽAS, VIDUTINIS, DIDELIS, EXTRALARGE) Vertybės: (28, 32, 36, 40) 

2. Naudojant get () metodą

get()Metodas grąžina reikšmę, susijusių su nurodytomis raktu. Jis grąžinamas, nulljei nurodytas raktas nerandamas.

Pavyzdžiui,

 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 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); ) ) 

Rezultatas

 „EnumMap“: (MAŽAS = 28, MEDIUM = 32, DIDELIS = 36, EXTRALARGE = 40) MEDIUM vertės: 32 

Pašalinkite „EnumMap Elements“

  • remove(key) - grąžina ir pašalina įrašą, susietą su nurodytu raktu, iš žemėlapio
  • remove(key, value) - pašalina įrašą iš žemėlapio tik tuo atveju, jei nurodytas raktas susiejamas su nurodyta reikšme ir pateikia loginę vertę

Pavyzdžiui,

 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 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); ) ) 

Rezultatas

„EnumMap“: (MAŽAS = 28, VIDUTINIS = 32, DIDELIS = 36, PATIRTIS = 40) Pašalinta reikšmė: 32 Ar įrašas (MAŽAS = 28) pašalintas? Tikras atnaujintas „EnumMap“: (LARGE = 36, EXTRALARGE = 40)

Pakeiskite „EnumMap Elements“

  • replace(key, value) - pakeičia reikšmę, susietą su nurodytu raktu, nauja verte
  • replace(key, old, new) - pakeičia senąją reikšmę nauja tik tuo atveju, jei senoji reikšmė jau susieta su nurodytu raktu
  • replaceAll(function) - pakeičia kiekvieną žemėlapio vertę nurodytos funkcijos rezultatu
 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 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); ) ) 

Rezultatas

 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) 

In the above program, notice the statement

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

Here, the method accesses all the entries of the map. It then replaces all the values with the new values provided by the lambda expressions.

Other Methods

Method Description
clone() Creates a copy of the EnumMap
containsKey() Searches the EnumMap for the specified key and returns a boolean result
containsValue() Searches the EnumMap for the specified value and returns a boolean result
size() Returns the size of the EnumMap
clear() Removes all the entries from the EnumMap

EnumSet Vs. EnumMap

Both the EnumSet and EnumMap class provides data structures to store enum values. However, there exist some major differences between them.

  • Enum set is represented internally as a sequence of bits, whereas the enum map is represented internally as arrays.
  • Enum set is created using its predefined methods like allOf(), noneOf(), of(), etc. However, an enum map is created using its constructor.

Clonable and Serializable Interfaces

The EnumMap class also implements Cloneable and Serializable interfaces.

Cloneable Interface

It allows the EnumMap class to make a copy of instances of the class.

Serializable Interface

Whenever Java objects need to be transmitted over a network, objects need to be converted into bits or bytes. This is because Java objects cannot be transmitted over the network.

SerializableSąsaja leidžia klases turi būti išspausdintas. Tai reiškia, kad įgyvendinamų klasių objektai Serializablegali būti paversti bitais arba baitais.

Įdomios straipsniai...