Dalam tutorial ini, kita akan belajar tentang kelas Java EnumMap dan operasinya dengan bantuan contoh.
The EnumMap
kelas dari koleksi kerangka Java menyediakan implementasi peta untuk unsur-unsur enum.
Dalam EnumMap
, elemen enum digunakan sebagai kunci . Ini mengimplementasikan antarmuka Peta.
Sebelum kita mempelajarinya EnumMap
, pastikan untuk mengetahui tentang Java Enums.
Membuat EnumMap
Untuk membuat peta enum, kita harus mengimpor java.util.EnumMap
paketnya terlebih dahulu. Setelah kami mengimpor paket, inilah cara kami membuat peta enum di Java.
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) EnumMap sizes = new EnumMap(Size.class);
Dalam contoh di atas, kami telah membuat peta enum bernama ukuran.
Sini,
- Ukuran - kunci enum yang memetakan ke nilai
- Integer - nilai dari peta enum yang terkait dengan kunci yang sesuai
Metode EnumMap
The EnumMap
kelas menyediakan metode yang memungkinkan kita untuk melakukan berbagai elemen pada peta enum.
Sisipkan Elemen ke EnumMap
put()
- menyisipkan pemetaan kunci / nilai yang ditentukan (entri) ke peta enumputAll()
- memasukkan semua entri dari peta tertentu ke peta ini
Sebagai contoh,
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); ) )
Keluaran
EnumMap1: (KECIL = 28, SEDANG = 32) EnumMap2: (KECIL = 28, SEDANG = 32, BESAR = 36)
Dalam contoh di atas, kami telah menggunakan putAll()
metode untuk memasukkan semua elemen dari peta enum ukuran1 ke peta enum ukuran2.
Hal ini juga memungkinkan untuk memasukkan unsur-unsur dari peta lain seperti HashMap
, TreeMap
, dll untuk peta enum menggunakan putAll()
. Namun, semua peta harus memiliki tipe enum yang sama.
Akses Elemen EnumMap
1. Menggunakan entrySet (), keySet () dan nilai ()
entrySet()
- mengembalikan satu set semua pemetaan kunci / nilai (entri) dari peta enumkeySet()
- mengembalikan satu set semua kunci dari peta enumvalues()
- mengembalikan satu set semua nilai dari peta enum
Sebagai contoh,
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()); ) )
Keluaran
EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Key / Value mapping: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Key: (SMALL, MEDIUM, LARGE, EXTRALARGE) Nilai: (28, 32, 36, 40)
2. Menggunakan Metode get ()
The get()
method mengembalikan nilai yang terkait dengan kunci tertentu. Ia mengembalikan null
jika kunci yang ditentukan tidak ditemukan.
Sebagai contoh,
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); ) )
Keluaran
EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Nilai MEDIUM: 32
Hapus Elemen EnumMap
remove(key)
- mengembalikan dan menghapus entri yang terkait dengan kunci tertentu dari petaremove(key, value)
- menghapus entri dari peta hanya jika kunci yang ditentukan dipetakan ke nilai yang ditentukan dan mengembalikan nilai boolean
Sebagai contoh,
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); ) )
Keluaran
EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Dihapus Nilai: 32 Apakah entri (SMALL = 28) dihilangkan? Benar Diperbarui EnumMap: (LARGE = 36, EXTRALARGE = 40)
Ganti Elemen EnumMap
replace(key, value)
- mengganti nilai yang terkait dengan kunci yang ditentukan dengan nilai barureplace(key, old, new)
- mengganti nilai lama dengan nilai baru hanya jika nilai lama sudah dikaitkan dengan kunci yang ditentukanreplaceAll(function)
- mengganti setiap nilai peta dengan hasil dari fungsi yang ditentukan
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); ) )
Keluaran
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.
The Serializable
antarmuka memungkinkan kelas untuk menjadi serial. Ini berarti objek dari kelas yang mengimplementasikan Serializable
dapat diubah menjadi bit atau byte.