Peta Enum Java

Dalam tutorial ini, kita akan belajar mengenai kelas Java EnumMap dan operasinya dengan bantuan contoh.

The EnumMapkelas rangka koleksi Java menyediakan pelaksanaan peta untuk unsur-unsur enum yang.

Di EnumMap, elemen enum digunakan sebagai kunci . Ia melaksanakan antara muka Peta.

Sebelum kita mengetahui tentang EnumMap, pastikan untuk mengetahui tentang Java Enums.

Membuat EnumMap

Untuk membuat peta enum, kita mesti mengimport java.util.EnumMappakej terlebih dahulu. Setelah kami mengimport pakej, berikut adalah bagaimana kita dapat 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.

Di sini,

  • Saiz - kunci enum yang memetakan nilai
  • Bilangan bulat - nilai peta enum yang berkaitan dengan kekunci yang sesuai

Kaedah EnumMap

The EnumMapkelas menyediakan kaedah yang membolehkan kita untuk melaksanakan pelbagai elemen pada peta enum.

Masukkan Elemen ke EnumMap

  • put() - memasukkan pemetaan kunci / nilai yang ditentukan (entri) ke peta enum
  • putAll() - memasukkan semua catatan peta yang ditentukan 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); ) ) 

Pengeluaran

 EnumMap1: (KECIL = 28, MEDIUM = 32) EnumMap2: (KECIL = 28, MEDIUM = 32, BESAR = 36) 

Dalam contoh di atas, kami telah menggunakan putAll()kaedah untuk memasukkan semua elemen ukuran peta enum1 ke peta ukuran enum2.

Ia juga mungkin untuk memasukkan unsur-unsur dari peta lain seperti HashMap, TreeMapdan lain-lain menjadi peta enum menggunakan putAll(). Walau bagaimanapun, semua peta mestilah jenis enum yang sama.

Akses Elemen EnumMap

1. Menggunakan entrySet (), keySet () dan nilai ()

  • entrySet() - mengembalikan sekumpulan semua pemetaan kunci / nilai (entri) peta enum
  • keySet() - mengembalikan sekumpulan semua kunci peta enum
  • values() - mengembalikan sekumpulan semua nilai 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()); ) ) 

Pengeluaran

 EnumMap: (KECIL = 28, MEDIUM = 32, BESAR = 36, LUAR BIASA = 40) Pemetaan kunci / nilai: (KECIL = 28, MEDIUM = 32, BESAR = 36, LUAR BIASA = 40) Kekunci: (KECIL, MENENGAH, BESAR, LUAR BIASA) Nilai: (28, 32, 36, 40) 

2. Menggunakan Kaedah get ()

The get()Cara mengembalikan nilai yang dikaitkan dengan kunci tertentu. Ia kembali nullsekiranya kunci yang ditentukan tidak dijumpai.

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

Pengeluaran

 EnumMap: (KECIL = 28, MEDIUM = 32, BESAR = 36, LUAR BIASA = 40) Nilai MEDIUM: 32 

Buang Elemen EnumMap

  • remove(key) - mengembalikan dan membuang entri yang berkaitan dengan kunci yang ditentukan dari peta
  • remove(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); ) ) 

Pengeluaran

EnumMap: (KECIL = 28, MEDIUM = 32, BESAR = 36, LUAR BIASA = 40) Nilai yang dikeluarkan: 32 Adakah entri (KECIL = 28) dikeluarkan? Peta Enum yang Dikemaskini Benar: (BESAR = 36, LUAR BIASA = 40)

Gantikan Elemen EnumMap

  • replace(key, value) - menggantikan nilai yang berkaitan dengan kunci yang ditentukan dengan nilai baru
  • replace(key, old, new) - menggantikan nilai lama dengan nilai baru hanya jika nilai lama sudah dikaitkan dengan kunci yang ditentukan
  • replaceAll(function) - menggantikan setiap nilai peta dengan hasil 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); ) ) 

Pengeluaran

 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.

Yang Serializableantara muka membolehkan kelas untuk diberi nombor siri. Ini bermaksud objek dari kelas yang dilaksanakan Serializabledapat ditukar menjadi bit atau bait.

Artikel menarik...