Java EnumSet

Dalam tutorial ini, kita akan belajar tentang kelas Java EnumSet dan berbagai metodenya dengan bantuan contoh.

The EnumSetkelas dari koleksi kerangka Java menyediakan implementasi seperangkat elemen dari enum tunggal.

Sebelum Anda mempelajari tentang EnumSet, pastikan Anda mengetahui tentang Java Enums.

Ini mengimplementasikan antarmuka Set.

Membuat EnumSet

Untuk membuat set enum, kita harus mengimpor java.util.EnumSetpaketnya terlebih dahulu.

Tidak seperti implementasi himpunan lainnya, himpunan enum tidak memiliki konstruktor publik. Kita harus menggunakan metode yang telah ditentukan untuk membuat kumpulan enum.

1. Menggunakan allOf (Size)

The allof()Metode menciptakan set enum yang berisi semua nilai-nilai dari jenis enum Size ditentukan. Sebagai contoh,

 import java.util.EnumSet; class Main ( // an enum named Size enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using allOf() EnumSet sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); ) ) 

Keluaran

 EnumSet: (KECIL, SEDANG, BESAR, EKSTRALARGE) 

Perhatikan pernyataannya,

 EnumSet sizes = EnumSet.allOf(Size.class); 

Di sini, Size.class menunjukkan enum Ukuran yang telah kita buat.

2. Menggunakan noneOf (Ukuran)

The noneOf()Metode menciptakan set enum kosong. Sebagai contoh,

 import java.util.EnumSet; class Main ( // an enum type Size enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using noneOf() EnumSet sizes = EnumSet.noneOf(Size.class); System.out.println("Empty EnumSet: " + sizes); ) ) 

Keluaran

 Kosongkan EnumSet: () 

Di sini, kami telah membuat enum kosong bernama ukuran.

Catatan : Kita hanya dapat memasukkan elemen dengan tipe enum Size pada program di atas. Itu karena kita membuat set enum kosong kita menggunakan Size enum.

3. Menggunakan Metode range (e1, e2)

The range()Metode menciptakan set enum yang berisi semua nilai-nilai enum antara e1 dan e2 termasuk kedua nilai. Sebagai contoh,

 import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using range() EnumSet sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE); System.out.println("EnumSet: " + sizes); ) ) 

Keluaran

 EnumSet: (SEDANG, BESAR, EKSTRALARGE) 

4. Menggunakan Metode ()

The of()Metode menciptakan set enum yang mengandung unsur-unsur yang ditentukan. Sebagai contoh,

 import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Using of() with a single parameter EnumSet sizes1 = EnumSet.of(Size.MEDIUM); System.out.println("EnumSet1: " + sizes1); EnumSet sizes2 = EnumSet.of(Size.SMALL, Size.LARGE); System.out.println("EnumSet2: " + sizes2); ) ) 

Keluaran

 EnumSet1: (MEDIUM) EnumSet2: (KECIL, BESAR) 

Metode EnumSet

The EnumSetkelas menyediakan metode yang memungkinkan kita untuk melakukan berbagai elemen pada enum set.

Sisipkan Elemen ke EnumSet

  • add() - menyisipkan nilai enum tertentu ke set enum
  • addAll() menyisipkan semua elemen dari koleksi yang ditentukan ke set

Sebagai contoh,

 import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using allOf() EnumSet sizes1 = EnumSet.allOf(Size.class); // Creating an EnumSet using noneOf() EnumSet sizes2 = EnumSet.noneOf(Size.class); // Using add method sizes2.add(Size.MEDIUM); System.out.println("EnumSet Using add(): " + sizes2); // Using addAll() method sizes2.addAll(sizes1); System.out.println("EnumSet Using addAll(): " + sizes2); ) ) 

Keluaran

 EnumSet menggunakan add (): (MEDIUM) EnumSet menggunakan addAll (): (SMALL, MEDIUM, LARGE, EXTRALARGE) 

Dalam contoh di atas, kami telah menggunakan addAll()metode untuk memasukkan semua elemen dari set enum size1 ke set enum size2.

Ini juga mungkin untuk memasukkan unsur-unsur dari koleksi lain seperti ArrayList, LinkedList, dll untuk set enum menggunakan addAll(). Namun, semua koleksi harus memiliki tipe enum yang sama.

Akses EnumSet Elements

Untuk mengakses elemen set enum, kita bisa menggunakan iterator()metode. Untuk menggunakan metode ini, kita harus mengimpor java.util.Iteratorpaketnya. Sebagai contoh,

 import java.util.EnumSet; import java.util.Iterator; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumSet using allOf() EnumSet sizes = EnumSet.allOf(Size.class); Iterator iterate = sizes.iterator(); System.out.print("EnumSet: "); while(iterate.hasNext()) ( System.out.print(iterate.next()); System.out.print(", "); ) ) ) 

Keluaran

 EnumSet: KECIL, SEDANG, BESAR, EKSTRALARGE, 

Catatan :

  • hasNext()mengembalikan truejika ada elemen berikutnya dalam set enum
  • next() mengembalikan elemen berikutnya dalam set enum

Hapus Elemen EnumSet

  • remove() - menghapus elemen tertentu dari set enum
  • removeAll() - menghapus semua elemen dari set enum

Sebagai contoh,

 import java.util.EnumSet; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating EnumSet using allOf() EnumSet sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); // Using remove() boolean value1 = sizes.remove(Size.MEDIUM); System.out.println("Is MEDIUM removed? " + value1); // Using removeAll() boolean value2 = sizes.removeAll(sizes); System.out.println("Are all elements removed? " + value2); ) ) 

Keluaran

EnumSet: (SMALL, MEDIUM, LARGE, EXTRALARGE) Apakah MEDIUM dihilangkan? true Apakah semua elemen dihilangkan? benar

Metode Lain

metode Deskripsi
copyOf() Creates a copy of the EnumSet
contains() Searches the EnumSet for the specified element and returns a boolean result
isEmpty() Checks if the EnumSet is empty
size() Returns the size of the EnumSet
clear() Removes all the elements from the EnumSet

Clonable and Serializable Interfaces

The EnumSet class also implements Cloneable and Serializable interfaces.

Cloneable Interface

It allows the EnumSet 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 interface allows classes to be serialized. This means objects of the classes implementing Serializable can be converted into bits or bytes.

Why EnumSet?

The EnumSetmenyediakan cara yang efisien untuk menyimpan nilai-nilai enum dari implementasi set lain (seperti HashSet, TreeSet).

Kumpulan enum hanya menyimpan nilai enum dari enum tertentu. Karenanya, JVM sudah mengetahui semua kemungkinan nilai dari himpunan.

Inilah alasan mengapa set enum diimplementasikan secara internal sebagai urutan bit. Bits menentukan apakah elemen ada dalam set enum atau tidak.

Bit dari elemen terkait diaktifkan jika elemen tersebut ada di set.

Artikel yang menarik...