Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java EnumSet

Java EnumSet

In deze zelfstudie leren we over de Java EnumSet-klasse en zijn verschillende methoden met behulp van voorbeelden.

De EnumSet klasse van het Java-verzamelingsraamwerk biedt een set implementatie van elementen van een enkele opsomming.

Voordat u meer te weten komt over EnumSet, moet u eerst kennis hebben van Java Enums.

Het implementeert de Set-interface.


EnumSet maken

Om een ​​enum-set te maken, moeten we de java.util.EnumSet . importeren pakket eerst.

In tegenstelling tot andere set-implementaties heeft de enum-set geen openbare constructors. We moeten de vooraf gedefinieerde methoden gebruiken om een ​​enum-set te maken.

1. AllOf(Size) gebruiken

De allof() methode maakt een enum-set die alle waarden van het opgegeven enum-type bevat Size . Bijvoorbeeld,

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);
    }

}

Uitvoer

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]

Let op de verklaring,

EnumSet<Size> sizes = EnumSet.allOf(Size.class);

Hier, Size.class geeft de Grootte . aan opsomming die we hebben gemaakt.


2. Geen van (grootte) gebruiken

De noneOf() methode maakt een lege enum-set aan. Bijvoorbeeld,

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);
    }
}

Uitvoer

Empty EnumSet : []

Hier hebben we een lege opsomming gemaakt met de naam sizes .

Opmerking :We kunnen alleen elementen van het enum-type Size . invoegen in bovenstaand programma. Het is omdat we onze lege enum-set hebben gemaakt met behulp van Size opsomming.


3. Methode bereik (e1, e2) gebruiken

De range() methode maakt een enum-set met alle waarden van een enum tussen e1 en e2 inclusief beide waarden. Bijvoorbeeld,

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);
    }
}

Uitvoer

EnumSet: [MEDIUM, LARGE, EXTRALARGE]

4. Methode van() gebruiken

De of() methode maakt een enum-set met de opgegeven elementen. Bijvoorbeeld,

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);
    }
}

Uitvoer

EnumSet1: [MEDIUM]
EnumSet2: [SMALL, LARGE]

Methoden van EnumSet

De EnumSet class biedt methoden waarmee we verschillende elementen op de enum-set kunnen uitvoeren.


Elementen invoegen in EnumSet

  • add() - voegt gespecificeerde enum-waarden toe aan de enum-set
  • addAll() voegt alle elementen van de opgegeven verzameling toe aan de set

Bijvoorbeeld,

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);
    }
}

Uitvoer

EnumSet using add(): [MEDIUM]
EnumSet using addAll(): [SMALL, MEDIUM, LARGE, EXTRALARGE]

In het bovenstaande voorbeeld hebben we de addAll() . gebruikt methode om alle elementen van een opsomming in te voegen sizes1 naar een opsomming van sizes2 .

Het is ook mogelijk om elementen uit andere collecties in te voegen, zoals ArrayList , LinkedList , etc. naar een enum set met behulp van addAll() . Alle verzamelingen moeten echter van hetzelfde enum-type zijn.


Toegang tot EnumSet-elementen

Om toegang te krijgen tot elementen van een enum-set, kunnen we de iterator() . gebruiken methode. Om deze methode te gebruiken, moeten we de java.util.Iterator . importeren pakket. Bijvoorbeeld,

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(", ");
        }
    }
}

Uitvoer

EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,

Opmerking :

  • hasNext() retourneert true als er een volgend element in de enum-set is
  • next() geeft het volgende element in de enum-set terug

EnumSet-elementen verwijderen

  • remove() - verwijdert het gespecificeerde element uit de enum set
  • removeAll() - verwijdert alle elementen uit de enum set

Bijvoorbeeld,

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);
    }
}

Uitvoer

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Is MEDIUM removed? true
Are all elements removed? true

Andere methoden

Methode Beschrijving
copyOf() Maakt een kopie van de EnumSet
contains() Zoekt de EnumSet voor het opgegeven element en geeft een booleaans resultaat
isEmpty() Controleert of de EnumSet is leeg
size() Retourneert de grootte van de EnumSet
clear() Verwijdert alle elementen uit de EnumSet

Klonbare en serialiseerbare interfaces

De EnumSet klasse implementeert ook Cloneable en Serializable interfaces.

Kloonbare interface

Het staat de EnumSet class om een ​​kopie te maken van instanties van de class.

Serializeerbare interface

Wanneer Java-objecten via een netwerk moeten worden verzonden, moeten objecten worden omgezet in bits of bytes. Dit komt omdat Java-objecten niet via het netwerk kunnen worden verzonden.

De Serializable interface maakt het mogelijk klassen te serialiseren. Dit betekent objecten van de klassen die Serializable . implementeren kan worden omgezet in bits of bytes.


Waarom EnumSet?

De EnumSet biedt een efficiënte manier om enum-waarden op te slaan dan andere set-implementaties (zoals HashSet , TreeSet ).

Een enum-set slaat alleen enum-waarden op van een specifieke enum. De JVM kent dus al alle mogelijke waarden van de set.

Dit is de reden waarom enum-sets intern worden geïmplementeerd als een reeks bits. Bits specificeert of elementen aanwezig zijn in de enum set of niet.

De bit van een corresponderend element wordt aangezet als dat element in de set aanwezig is.


Java

  1. Java-operators
  2. Java-opmerkingen
  3. Java voor elke lus
  4. Java-strings
  5. Java-interface
  6. Java anonieme klasse
  7. Java-opsommingen
  8. Java enum Constructor
  9. Java proberen-met-bronnen
  10. Java-annotaties
  11. Java-beweringen