java
Dalam tutorial ini, kita akan belajar tentang kelas Java EnumSet dan berbagai metodenya dengan bantuan contoh.
EnumSet
kelas kerangka koleksi Java menyediakan satu set implementasi elemen dari satu enum.
Sebelum Anda mempelajari EnumSet, pastikan Anda mengetahui tentang Java Enums.
Ini mengimplementasikan antarmuka Set.
Untuk membuat set enum, kita harus mengimpor java.util.EnumSet
paket dulu.
Tidak seperti implementasi set lainnya, set enum tidak memiliki konstruktor publik. Kita harus menggunakan metode yang telah ditentukan untuk membuat set enum.
allof()
metode membuat set enum yang berisi semua nilai dari jenis enum yang ditentukan Ukuran . Misalnya,
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<Size> sizes = EnumSet.allOf(Size.class);
System.out.println("EnumSet: " + sizes);
}
}
Keluaran
EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Perhatikan pernyataannya,
EnumSet<Size> sizes = EnumSet.allOf(Size.class);
Di sini, Size.class menunjukkan Ukuran enum yang telah kita buat.
noneOf()
metode membuat set enum kosong. Misalnya,
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<Size> sizes = EnumSet.noneOf(Size.class);
System.out.println("Empty EnumSet: " + sizes);
}
}
Keluaran
Empty EnumSet : []
Di sini, kami telah membuat enum kosong bernama sizes .
Catatan :Kami hanya dapat menyisipkan elemen jenis enum Ukuran dalam program di atas. Itu karena kami membuat set enum kosong kami menggunakan Size enum.
range()
metode membuat set enum yang berisi semua nilai enum antara e1 dan e2 termasuk kedua nilai tersebut. Misalnya,
import java.util.EnumSet;
class Main {
enum Size {
SMALL, MEDIUM, LARGE, EXTRALARGE
}
public static void main(String[] args) {
// Creating an EnumSet using range()
EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE);
System.out.println("EnumSet: " + sizes);
}
}
Keluaran
EnumSet: [MEDIUM, LARGE, EXTRALARGE]
of()
metode membuat set enum yang berisi elemen yang ditentukan. Misalnya,
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<Size> sizes1 = EnumSet.of(Size.MEDIUM);
System.out.println("EnumSet1: " + sizes1);
EnumSet<Size> sizes2 = EnumSet.of(Size.SMALL, Size.LARGE);
System.out.println("EnumSet2: " + sizes2);
}
}
Keluaran
EnumSet1: [MEDIUM] EnumSet2: [SMALL, LARGE]
EnumSet
class menyediakan metode yang memungkinkan kita untuk melakukan berbagai elemen pada set enum.
add()
- menyisipkan nilai enum yang ditentukan ke set enumaddAll()
menyisipkan semua elemen dari koleksi yang ditentukan ke setMisalnya,
import java.util.EnumSet;
class Main {
enum Size {
SMALL, MEDIUM, LARGE, EXTRALARGE
}
public static void main(String[] args) {
// Creating an EnumSet using allOf()
EnumSet<Size> sizes1 = EnumSet.allOf(Size.class);
// Creating an EnumSet using noneOf()
EnumSet<Size> 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 using add(): [MEDIUM] EnumSet using addAll(): [SMALL, MEDIUM, LARGE, EXTRALARGE]
Pada contoh di atas, kami telah menggunakan addAll()
metode untuk menyisipkan semua elemen enum set sizes1 ke enum set sizes2 .
Anda juga dapat menyisipkan elemen dari koleksi lain seperti ArrayList
, LinkedList
, dll. ke set enum menggunakan addAll()
. Namun, semua koleksi harus memiliki tipe enum yang sama.
Untuk mengakses elemen dari set enum, kita dapat menggunakan iterator()
metode. Untuk menggunakan metode ini, kita harus mengimpor java.util.Iterator
kemasan. Misalnya,
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<Size> sizes = EnumSet.allOf(Size.class);
Iterator<Size> iterate = sizes.iterator();
System.out.print("EnumSet: ");
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
}
}
Keluaran
EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,
Catatan :
hasNext()
mengembalikan true
jika ada elemen berikutnya dalam set enumnext()
mengembalikan elemen berikutnya dalam set enumremove()
- menghapus elemen yang ditentukan dari set enumremoveAll()
- menghapus semua elemen dari set enumMisalnya,
import java.util.EnumSet;
class Main {
enum Size {
SMALL, MEDIUM, LARGE, EXTRALARGE
}
public static void main(String[] args) {
// Creating EnumSet using allOf()
EnumSet<Size> 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] Is MEDIUM removed? true Are all elements removed? true
Metode | Deskripsi |
---|---|
copyOf() | Membuat salinan EnumSet |
contains() | Menelusuri EnumSet untuk elemen yang ditentukan dan mengembalikan hasil boolean |
isEmpty() | Memeriksa apakah EnumSet kosong |
size() | Mengembalikan ukuran EnumSet |
clear() | Menghapus semua elemen dari EnumSet |
EnumSet
kelas juga mengimplementasikan Cloneable
dan Serializable
antarmuka.
Antarmuka yang Dapat Digandakan
Ini memungkinkan EnumSet
class untuk membuat salinan instance dari class tersebut.
Antarmuka Serializable
Kapanpun objek Java perlu ditransmisikan melalui jaringan, objek perlu diubah menjadi bit atau byte. Ini karena objek Java tidak dapat ditransmisikan melalui jaringan.
Serializable
antarmuka memungkinkan kelas untuk menjadi serial. Ini berarti objek dari kelas yang mengimplementasikan Serializable
dapat diubah menjadi bit atau byte.
EnumSet
menyediakan cara yang efisien untuk menyimpan nilai enum daripada implementasi set lainnya (seperti HashSet
, TreeSet
).
Set enum hanya menyimpan nilai enum dari enum tertentu. Oleh karena itu, JVM sudah mengetahui semua nilai yang mungkin dari himpunan tersebut.
Inilah alasan mengapa set enum diimplementasikan secara internal sebagai urutan bit. Bit menentukan apakah elemen ada dalam set enum atau tidak.
Bit dari elemen yang sesuai diaktifkan jika elemen itu ada di set.
java
Antarmuka Antrian Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Queue dan metodenya. Queue antarmuka kerangka koleksi Java menyediakan fungsionalitas struktur data antrian. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Antrian Sejak Queue adalah antarmuka, kami t
Java PriorityQueue Dalam tutorial ini, kita akan belajar tentang kelas PriorityQueue dari framework koleksi Java dengan bantuan contoh. PriorityQueue class menyediakan fungsionalitas struktur data heap. Ini mengimplementasikan antarmuka Antrian. Tidak seperti antrian normal, elemen antrian pri
Antarmuka Deque Java Dalam tutorial ini, kita akan belajar tentang antarmuka Deque, cara menggunakannya, dan metodenya. Deque antarmuka kerangka koleksi Java menyediakan fungsionalitas antrian berujung ganda. Ini memperluas Queue antarmuka. Kerja Deque Dalam antrian biasa, elemen ditambahkan dar
Java EnumSet Dalam tutorial ini, kita akan belajar tentang kelas Java EnumSet dan berbagai metodenya dengan bantuan contoh. EnumSet kelas kerangka koleksi Java menyediakan satu set implementasi elemen dari satu enum. Sebelum Anda mempelajari EnumSet, pastikan Anda mengetahui tentang Java Enums.