Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java EnumSet

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.

Ini mengimplementasikan antarmuka Set.


Membuat EnumSet

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.

1. Menggunakan allOf(Size)

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.


2. Menggunakan noneOf(Size)

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.


3. Menggunakan Metode range(e1, e2)

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]

4. Menggunakan of() Metode

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]

Metode EnumSet

EnumSet class menyediakan metode yang memungkinkan kita untuk melakukan berbagai elemen pada set enum.


Sisipkan Elemen ke EnumSet

Misalnya,

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.


Mengakses Elemen EnumSet

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 :


Hapus Elemen EnumSet

Misalnya,

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 Lain

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

Antarmuka yang Dapat Dikloning dan Serialisasi

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.


Mengapa EnumSet?

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

  1. Operator Jawa
  2. Komentar Jawa
  3. Java untuk setiap Loop
  4. String Jawa
  5. Kelas Anonim Java
  6. enum Jawa
  7. Konstruktor enum Java
  8. Java mencoba-dengan-sumber daya
  9. Anotasi Jawa
  10. Pernyataan Jawa