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: Aanmaak, operaties en prestatietips

Java EnumSet

Deze handleiding leidt je door het aanmaken, manipuleren en optimaliseren van Java EnumSet-collecties met hands-on codevoorbeelden en best-practice inzichten.

De EnumSet-klasse is een high-performance set-implementatie ontworpen exclusief voor enum-types. Het implementeert de java.util.Set-interface en erft ook Cloneable en Serializable, wat het zowel veelzijdig als efficiënt maakt.

Voordat je duikt in EnumSet, zorg dat je comfortabel bent met Java enums, aangezien de set strak gekoppeld is aan een enkel enum-type.

Java EnumSet: Aanmaak, operaties en prestatietips


Een EnumSet aanmaken

In tegenstelling tot andere set-implementaties, blootlegt EnumSet geen publieke constructors. In plaats daarvan gebruik je de statische factory-methodes om een set te bouwen.

1. Met EnumSet.allOf()

De allOf()-methode creëert een set die elke constant van het gespecificeerde enum-type bevat.

import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { EnumSet<Size> sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); } }

Output

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]

2. Met EnumSet.noneOf()

Creëert een lege set die alleen waarden van het gespecificeerde enum-type kan bevatten.

import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { EnumSet<Size> sizes = EnumSet.noneOf(Size.class); System.out.println("Lege EnumSet: " + sizes); } }

Output

Lege EnumSet: []

Let op: De resulterende set accepteert alleen Size-constanten omdat het geïnstantieerd werd met Size.class.

3. Met EnumSet.range()

Bouwt een set die alle enum-constanten bevat van een ondergrens tot een bovengrens, inclusief.

import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE); System.out.println("EnumSet: " + sizes); } }

Output

EnumSet: [MEDIUM, LARGE, EXTRALARGE]

4. Met EnumSet.of()

Creëert een set die een of meer specifieke enum-constanten bevat.

import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { 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); } }

Output

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

Algemene operaties op EnumSet

Elementen toevoegen

  • add() – voegt een enkele enum-constant toe.
  • addAll() – voegt een andere collectie van hetzelfde enum-type samen.
import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { EnumSet<Size> all = EnumSet.allOf(Size.class); EnumSet<Size> selected = EnumSet.noneOf(Size.class); selected.add(Size.MEDIUM); System.out.println("Na add(): " + selected); selected.addAll(all); System.out.println("Na addAll(): " + selected); } }

Output

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

Let op dat addAll() elke Collection<Size> accepteert, inclusief lijsten of sets, mits ze hetzelfde enum-type bevatten.

Elementen itereren

Gebruik een Iterator om de set te doorlopen:

import java.util.EnumSet; import java.util.Iterator; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { EnumSet<Size> sizes = EnumSet.allOf(Size.class); Iterator<Size> it = sizes.iterator(); System.out.print("EnumSet: "); while (it.hasNext()) { System.out.print(it.next() + ", "); } } }

Output

EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE, 

Elementen verwijderen

  • remove() – verwijdert een specifieke constant.
  • removeAll() – leegt de set wanneer zichzelf doorgegeven wordt.
import java.util.EnumSet; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { EnumSet<Size> sizes = EnumSet.allOf(Size.class); System.out.println("EnumSet: " + sizes); boolean removed = sizes.remove(Size.MEDIUM); System.out.println("Is MEDIUM verwijderd? " + removed); boolean cleared = sizes.removeAll(sizes); System.out.println("Zijn alle elementen verwijderd? " + cleared); } }

Output

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE] Is MEDIUM verwijderd? true Zijn alle elementen verwijderd? true

Aanvullende helper-methoden

MethodeBeschrijving
copyOf()Creëert een nieuwe EnumSet met dezelfde elementen.
contains()Controleert of een specifieke constant aanwezig is.
isEmpty()Retourneert true als de set geen elementen heeft.
size()Retourneert het aantal elementen.
clear()Verwijdert alle elementen.

Cloneable en Serializable

EnumSet implementeert Cloneable, wat je in staat stelt een shallow copy aan te maken via clone(). Het implementeert ook Serializable, wat veilige transmissie over netwerken of persistentie naar schijf toestaat.

Waarom EnumSet gebruiken?

Omdat EnumSet de waarden opslaat als een bit-vector, voeren operaties zoals add, remove en contains uit in constante tijd met minimaal geheugenoverhead. De JVM kent al de exacte set mogelijke constanten voor een gegeven enum, wat EnumSet ver meer efficiënt maakt dan generieke implementaties zoals HashSet of TreeSet.

In de praktijk, kies EnumSet wanneer je een high-performance set van enum-waarden nodig hebt.


Java

  1. Java-operators beheersen: typen, syntax en praktische voorbeelden
  2. Java-commentaar: typen, gebruik en best practices
  3. Java Enhanced For-lus beheersen: syntax, voorbeelden en best practices
  4. Java Strings beheersen: aanmaken, methodes en best practices
  5. Java interfaces meesteren: concepten, implementatie en best practices
  6. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  7. Java Enums meesteren: complete gids tot Enums & Enum klassen
  8. Java Enum constructors uitgelegd met praktisch voorbeeld
  9. Java Try-with-resources meesteren: automatische resource management uitgelegd
  10. Java Annotaties uitgelegd: typen, plaatsing en praktische voorbeelden
  11. Java Assertions: een praktische gids voor bugdetectie en codebetrouwbaarheid