Dalam tutorial ini, kita akan belajar mengenai kelas Java EnumSet dan pelbagai kaedahnya dengan bantuan contoh.
The EnumSet
kelas rangka koleksi Java menyediakan pelaksanaan set unsur-unsur yang enum tunggal.
Sebelum anda mengetahui tentang EnumSet, pastikan anda mengetahui mengenai Java Enums.
Ia melaksanakan antara muka Set.
Membuat EnumSet
Untuk membuat set enum, kita mesti mengimport java.util.EnumSet
pakej terlebih dahulu.
Tidak seperti pelaksanaan set lain, set enum tidak mempunyai pembina awam. Kita mesti menggunakan kaedah yang telah ditentukan untuk membuat set enum.
1. Menggunakan allOf (Saiz)
The allof()
kaedah mewujudkan set enum yang mengandungi semua nilai-nilai yang dinyatakan jenis enum Saiz di. 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); ) )
Pengeluaran
Set Enum: (KECIL, MEDIUM, BESAR, LUAR BIASA)
Perhatikan kenyataannya,
EnumSet sizes = EnumSet.allOf(Size.class);
Di sini, Size.class menunjukkan enum Size yang telah kita buat.
2. Menggunakan noneOf (Saiz)
The noneOf()
kaedah mewujudkan 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); ) )
Pengeluaran
Set Enum Kosong: ()
Di sini, kami telah membuat enum kosong bernama saiz.
Catatan : Kami hanya boleh memasukkan elemen Ukuran enum dalam program di atas. Ini kerana kami membuat set enum kosong kami menggunakan Size enum.
3. Menggunakan kaedah julat (e1, e2)
The range()
kaedah mewujudkan set enum mengandungi semua nilai yang enum antara e1 dan e2 termasuk kedua-dua 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); ) )
Pengeluaran
Set Enum: (MEDIUM, BESAR, LUAR BIASA)
4. Menggunakan Kaedah ()
The of()
kaedah mewujudkan set enum yang mengandungi unsur-unsur yang dinyatakan. 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); ) )
Pengeluaran
EnumSet1: (MEDIUM) EnumSet2: (KECIL, BESAR)
Kaedah EnumSet
The EnumSet
kelas menyediakan kaedah yang membolehkan kita untuk melaksanakan pelbagai elemen pada set enum itu.
Masukkan Elemen ke EnumSet
add()
- memasukkan nilai enum yang ditentukan ke set enumaddAll()
memasukkan semua elemen 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); ) )
Pengeluaran
EnumSet menggunakan add (): (MEDIUM) EnumSet menggunakan addAll (): (SMALL, MEDIUM, LARGE, EXTRALARGE)
Dalam contoh di atas, kami telah menggunakan addAll()
kaedah untuk memasukkan semua elemen ukuran set enum1 ke ukuran set enum2.
Ia juga mungkin untuk memasukkan unsur-unsur dari koleksi lain seperti ArrayList
, LinkedList
, dan sebagainya untuk satu set enum menggunakan addAll()
. Walau bagaimanapun, semua koleksi mestilah dari jenis enum yang sama.
Akses Elemen EnumSet
Untuk mengakses elemen kumpulan enum, kita dapat menggunakan iterator()
kaedahnya. Untuk menggunakan kaedah ini, kita mesti mengimport java.util.Iterator
pakej. 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(", "); ) ) )
Pengeluaran
EnumSet: KECIL, MEDIUM, BESAR, LUAR BIASA,
Nota :
hasNext()
kembalitrue
sekiranya terdapat unsur seterusnya dalam set enumnext()
mengembalikan elemen seterusnya dalam set enum
Keluarkan Elemen EnumSet
remove()
- mengeluarkan elemen yang ditentukan dari set enumremoveAll()
- mengeluarkan 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); ) )
Pengeluaran
EnumSet: (KECIL, MEDIUM, BESAR, LUAR BIASA) Adakah MEDIUM dikeluarkan? benar Adakah semua unsur dikeluarkan? benar
Kaedah lain
Kaedah | Penerangan |
---|---|
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?
Ini EnumSet
menyediakan cara yang cekap untuk menyimpan nilai enum daripada pelaksanaan set lain (seperti HashSet
, TreeSet
).
Satu set enum hanya menyimpan nilai enum enum tertentu. Oleh itu, JVM sudah mengetahui semua kemungkinan nilai set tersebut.
Inilah sebab mengapa set enum dilaksanakan secara dalaman sebagai urutan bit. Bits menentukan sama ada unsur terdapat dalam set enum atau tidak.
Bit elemen yang sesuai dihidupkan jika elemen itu terdapat dalam set.