Iterálva a Java-beli Enum értékek felett

1. Áttekintés

Enum a Java-ban egy olyan adattípus, amely segít előre beállított állománykészletet rendelni egy változóhoz.

Ebben a rövid cikkben különféle módokat fogunk látni, amelyekkel iterálhatunk egy Enum Java-ban.

2. Iterating Over Enum Értékek

Először definiáljunk egy Enum, így néhány egyszerű kód példát hozhatunk létre:

public enum DaysOfWeekEnum {VASÁRNAP, HÉTFŐ, KEDD, SZERDA, CSÜTÖRTÖK, PÉNTEK, SZOMBAT} 

Az Enums nem rendelkezik olyan iterációs módszerekkel, mint a az egyes() vagy iterátor (). Ehelyett használhatjuk a Enum értékei, amelyeket a értékek () módszer.

2.1. Ismétlődő használat hurokhoz

Először is egyszerűen használhatjuk a régi iskolát mert hurok:

for (DaysOfWeekEnum nap: DaysOfWeekEnum.values ​​()) {System.out.println (nap); }

2.2. Iterate használata Folyam

Használhatjuk is java.util.Stream. Annak érdekében, hogy műveleteket hajtsunk végre a Enum értékek.

A Folyam két lehetőségünk van, az egyik használ Stream.of:

Stream.of (DaysOfWeekEnum.values ​​());

Egy másik, felhasználva Tömbök.folyam:

Arrays.stream (DaysOfWeekEnum.values ​​());

Tehát terjesszük ki a DaysOfWeekEnum osztályban létrehozhat egy példát Folyam:

public enum DaysOfWeekEnum {VASÁRNAP ("ki"), HÉTFŐ ("dolgozik"), KEDD ("dolgozik"), SZERDA ("dolgozik"), CSÜTÖRTÖK ("dolgozik"), PÉNTEK ("dolgozik"), SZOMBAT ("ki) "); privát String typeOfDay; DaysOfWeekEnum (String typeOfDay) {this.typeOfDay = typeOfDay; } // szokásos getterek és beállítók nyilvános statikus adatfolyam () {return Stream.Of (DaysOfWeekEnum.values ​​()); }}

Most írunk egy példát a nem munkanapok kinyomtatásához:

public class EnumStreamExample {public static void main () {DaysOfWeekEnum.stream () .filter (d -> d.getTypeOfDay (). egyenlő ("off")) .forEach (System.out :: println); }}

A kimenet, amelyet ennek futtatásakor kapunk:

VASÁRNAP SZOMBAT

2.3. Iterate használata az egyes()

A az egyes() módszert adtak a Iterálható interfész a Java 8-ban. Tehát az összes java gyűjtemény osztály rendelkezik a az egyes() módszer. Ahhoz, hogy ezeket egy Enummal együtt használhassuk, először át kell alakítanunk az Enumot egy megfelelő gyűjteményre. Tudjuk használni Arrays.asList () generálni egy Tömb lista amelyet ezután a az egyes() módszer:

Arrays.asList (DaysOfWeekEnum.values ​​()) .forEach (nap -> System.out.println (nap)); 

2.4. Iterate használata EnumSet

EnumSet egy speciális készletmegvalósítás, amellyel használhatók Enum típusok:

EnumSet.allOf (DaysOfWeekEnum.class) .forEach (nap -> System.out.println (nap));

2.5. Egy Tömb lista nak,-nek Enum Értékek

Hozzáadhatunk egy an értékét is Enum a Lista. Ez lehetővé teszi számunkra a Lista mint bármely más:

Listanapok = new ArrayList (); napok.add (DaysOfWeekEnum.PÉNTEK); days.add (DaysOfWeekEnum.SATURDAY); napok.add (DaysOfWeekEnum.SUNDAY); mert (DaysOfWeekEnum nap: napok) {System.out.println (nap); } nap.eltávolítás (DaysOfWeekEnum.SATURDAY); if (! days.contains (DaysOfWeekEnum.SATURDAY)) {System.out.println ("A szombat már nincs a listán"); } a (DaysOfWeekEnum nap: napok) {System.out.println (nap); } 

Készíthetünk egy Tömb lista használva Arrays.asList ().

Mivel azonban a Tömb lista mögött áll a Enum értékek tömbje változhatatlan lesz, ezért nem adhatunk hozzá elemeket vagy távolíthatunk el azokat a Lista. A következő kód eltávolítása sikertelen lenne egy UnsupportedOperationException:

Listanapok = Arrays.asList (DaysOfWeekEnum.values ​​()); napok.eltávolítás (0); 

3. Következtetés

Különböző módokat láttunk az iterációra Enum felhasználásával az egyes,Folyam, és mert hurok a Java-ban. Ha párhuzamos műveleteket kell végrehajtanunk, Folyam jó lehetőség lenne.

Egyébként nincs korlátozás, hogy melyik módszert kell használni.

Mint mindig, az itt bemutatott példák kódja megtalálható a GitHubon.