Dalam tutorial ini, kita akan belajar tentang kelas Java EnumSet dan berbagai metodenya dengan bantuan contoh.
The EnumSet
kelas 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.EnumSet
paketnya 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 EnumSet
kelas menyediakan metode yang memungkinkan kita untuk melakukan berbagai elemen pada enum set.
Sisipkan Elemen ke EnumSet
add()
- menyisipkan nilai enum tertentu ke set enumaddAll()
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.Iterator
paketnya. 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()
mengembalikantrue
jika ada elemen berikutnya dalam set enumnext()
mengembalikan elemen berikutnya dalam set enum
Hapus Elemen EnumSet
remove()
- menghapus elemen tertentu dari set enumremoveAll()
- 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 EnumSet
menyediakan 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.