Java EnumSet

Dalam tutorial ini, kita akan belajar mengenai kelas Java EnumSet dan pelbagai kaedahnya dengan bantuan contoh.

The EnumSetkelas 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.EnumSetpakej 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 EnumSetkelas 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 enum
  • addAll() 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.Iteratorpakej. 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()kembali truesekiranya terdapat unsur seterusnya dalam set enum
  • next() mengembalikan elemen seterusnya dalam set enum

Keluarkan Elemen EnumSet

  • remove() - mengeluarkan elemen yang ditentukan dari set enum
  • removeAll() - 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 EnumSetmenyediakan 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.

Artikel menarik...