I denne vejledning lærer vi om Java EnumMap-klassen og dens operationer ved hjælp af eksempler.
Den EnumMap
klasse af Java kollektioner rammer giver et kort implementering for elementer i en enum.
I EnumMap
enum-elementer bruges som nøgler . Det implementerer kortgrænsefladen.
Før vi lærer om EnumMap
, skal du sørge for at vide om Java Enums.
Oprettelse af en EnumMap
For at oprette et enum-kort skal vi først importere java.util.EnumMap
pakken. Når vi først har importeret pakken, kan du oprette enum-kort i Java her.
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) EnumMap sizes = new EnumMap(Size.class);
I ovenstående eksempel har vi oprettet et enum-kort med navnet størrelser.
Her,
- Størrelse - nøgler til det antal, der kortlægges til værdier
- Heltal - værdier for enumkortet, der er knyttet til de tilsvarende taster
Metoder til EnumMap
Den EnumMap
klasse indeholder metoder, der tillader os at udføre forskellige elementer på nummereringstypen kort.
Indsæt elementer til EnumMap
put()
- indsætter den angivne nøgle- / værdikortlægning (post) til enum-kortetputAll()
- indsætter alle posterne på et bestemt kort på dette kort
For eksempel,
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); ) )
Produktion
EnumMap1: (SMALL = 28, MEDIUM = 32) EnumMap2: (SMALL = 28, MEDIUM = 32, LARGE = 36)
I ovenstående eksempel har vi brugt putAll()
metoden til at indsætte alle elementerne i en enum-kortstørrelser1 til et enum-kort med størrelser2.
Det er også muligt at indsætte elementer fra andre kort såsom HashMap
, TreeMap
etc. til en enum kort ved hjælp putAll()
. Dog skal alle kort være af samme enumtype.
Adgang til EnumMap-elementer
1. Brug af entrySet (), keySet () og værdier ()
entrySet()
- returnerer et sæt med alle nøgler / værdikortlægning (indtastning) på et enum-kortkeySet()
- returnerer et sæt af alle tasterne på et enum-kortvalues()
- returnerer et sæt af alle værdierne på et enum-kort
For eksempel,
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()); ) )
Produktion
EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Nøgle- / værditilknytninger: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Taster: (SMALL, MEDIUM, LARGE, EXTRALARGE) Værdier: (28, 32, 36, 40)
2. Brug get () -metoden
Den get()
metode returnerer værdien forbundet med den angivne nøgle. Den vender tilbage, null
hvis den angivne nøgle ikke findes.
For eksempel,
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); ) )
Produktion
EnumMap: (SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40) Value of MEDIUM: 32
Remove EnumMap Elements
remove(key)
- returns and removes the entry associated with the specified key from the mapremove(key, value)
- removes the entry from the map only if the specified key mapped to the specified value and return a boolean value
For example,
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); ) )
Output
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)
Replace EnumMap Elements
replace(key, value)
- replaces the value associated with the specified key by the new valuereplace(key, old, new)
- replaces the old value with the new value only if the old value is already associated with the specified keyreplaceAll(function)
- replaces each value of the map with the result of the specified function
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); ) )
Output
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.
Den Serializable
grænseflade tillader klasser skal serialiseres. Dette betyder, at objekter fra de implementerende klasser Serializable
kan konverteres til bits eller bytes.