Java EnumMap

Tässä opetusohjelmassa opitaan Java EnumMap -luokasta ja sen toiminnoista esimerkkien avulla.

EnumMapLuokka Java kokoelmien kehys tarjoaa kartan toteutuksen elementtejä ENUM.

Sisään EnumMapenum-elementtejä käytetään avaimina . Se toteuttaa Map-käyttöliittymän.

Ennen kuin opimme EnumMap, muista tietää Java Enums.

EnumMap-kartan luominen

Enum-kartan luomiseksi meidän on java.util.EnumMapensin tuotava paketti. Kun paketti on tuotu, voimme näin luoda enum-karttoja Javassa.

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

Yllä olevassa esimerkissä olemme luoneet enum-kartan, jonka nimet ovat kokoja.

Tässä,

  • Koko - arvot yhdistävän numeronäppäimet
  • Kokonaisluku - vastaaviin näppäimiin liittyvä laskentakartan arvot

EnumMap-menetelmät

EnumMapLuokan tarjoaa menetelmiä, joiden avulla voimme tehdä erilaisia elementtejä ENUM karttoihin.

Lisää elementit EnumMapiin

  • put() - lisää määritetyn avaimen / arvon kartoituksen (merkinnän) luetteloon
  • putAll() - lisää kaikki määritetyn kartan merkinnät tähän karttaan

Esimerkiksi,

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

Tuotos

 EnumMap1: (Pieni = 28, KESKI = 32) EnumMap2: (Pieni = 28, KESKI = 32, SUURI = 36) 

Yllä olevassa esimerkissä olemme käyttäneet putAll()menetelmää kaikkien enum-karttakokojen1 elementtien lisäämiseksi koot2-karttaan.

On myös mahdollista lisätä elementtejä muista karttoja kuten HashMap, TreeMapjne ENUM kartan avulla putAll(). Kaikkien karttojen tulisi kuitenkin olla samantyyppisiä.

Avaa EnumMap Elements

1. Käyttämällä entrySet (), keySet () ja arvoja ()

  • entrySet() - palauttaa joukon kaikkia näppäinyhdistelmäkartan näppäimiä / arvoja (merkintä)
  • keySet() - palauttaa joukon kaikkia enum-kartan näppäimiä
  • values() - palauttaa joukon kaikkia arvokartan arvoja

Esimerkiksi,

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

Tuotos

 EnumMap: (PIENI = 28, KESKI = 32, SUURI = 36, YLITTÄIN = 40) Avaimen / arvon määritykset: (Pieni = 28, KESKI = 32, SUURI = 36, ULKONAINEN = 40) Avaimet: (Pieni, Keskikokoinen, Suuri, EXTRALARGE) Arvot: (28, 32, 36, 40) 

2. Käytä get () -menetelmää

get()Menetelmä palauttaa liittyvän arvon määriteltyjen avaimen. Se palauttaa, nulljos määritettyä avainta ei löydy.

Esimerkiksi,

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

Tuotos

 EnumMap: (PIENI = 28, KESKI = 32, SUURI = 36, YLIMITTÄINEN = 40) KESKISARVO arvo: 32 

Poista EnumMap Elements

  • remove(key) - palauttaa ja poistaa määritettyyn avaimeen liittyvän merkinnän kartalta
  • remove(key, value) - poistaa merkinnän kartalta vain, jos määritetty avain on yhdistetty määritettyyn arvoon ja palauttaa loogisen arvon

Esimerkiksi,

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

Tuotos

EnumMap: (Pieni = 28, KESKI = 32, SUURI = 36, YLITTÄINEN = 40) Poistettu arvo: 32 Onko merkintä (Pieni = 28) poistettu? Todellinen päivitetty EnumMap: (LARGE = 36, EXTRALARGE = 40)

Vaihda EnumMap Elements

  • replace(key, value) - korvaa määritettyyn avaimeen liittyvän arvon uudella arvolla
  • replace(key, old, new) - korvaa vanhan arvon uudella vain, jos vanha arvo on jo liitetty määritettyyn avaimeen
  • replaceAll(function) - korvaa jokaisen kartan arvon määritetyn toiminnon tuloksella
 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); ) ) 

Tuotos

 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.

SerializableKäyttöliittymän avulla luokat sarjoitettava. Tämä tarkoittaa, että toteutettavien luokkien objektit Serializablevoidaan muuntaa bitteiksi tai tavuiksi.

Mielenkiintoisia artikkeleita...