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.