Probleemipüstituses
Arvestades enum-konstandit, on eesmärk leida jada järgmine enumi väärtus. Kui antud konstant on loendis viimane, siis tuleb järgmise väärtusena tagastada esimene enum väärtus.
Lahendus
Selle probleemi lahendamiseks loome näitena enum-klassi nimega DaysOfWeek. Seejärel lisame meetodi nimega getNext(), mis tagastab jada järgmise enumi väärtuse.
Siin on koodi samm-sammuline ülevaade:
1. Esmalt looge enum-klass nimega DaysOfWeek ja määrake selle enum-konstandid.
public enum DaysOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; }
2. Järgmisena lisage meetod getNext() DaysOfWeek enum klassi. See meetod tagastab järgmise loendi väärtuse praeguse loendi väärtuse alusel.
public enum DaysOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; public DaysOfWeek getNext() { if (this.ordinal() == DaysOfWeek.values().length - 1) { return MONDAY; } return DaysOfWeek.values()[this.ordinal() + 1]; } }
3. Meetod getNext() töötab järgmiselt:
– Esmalt kontrollime, kas praegune enum väärtus on loendis viimane (võrreldes järgväärtust väärtuste massiivi pikkusega miinus 1).
– Kui praegune enumi väärtus on viimane, tagastame esimese loendi väärtuse (st ESMASPÄEV).
– Vastasel juhul tagastame väärtuste massiivi indekseerimiseks järgmise loendi väärtuse, kasutades järguväärtust.
Nüüd saame kasutada meetodit getNext() mis tahes enum-konstandi järgmise enumi väärtuse toomiseks.
Teekide ja funktsioonide kasutamine
Java pakub mitmeid teeke ja funktsioone, mis on kasulikud enumitega töötamisel. Siin on paar näidet:
EnumSet
- Java EnumSet on spetsialiseerunud Määrake spetsiaalselt enumite jaoks loodud rakendus. See on väga tõhus ja pakub meetodeid hulgitoimingute tegemiseks, nagu komplement, liit, ristmik ja erinevus.
EnumMap
- EnumMap on veel üks spetsiaalne kollektsioon, mis on loodud spetsiaalselt enumi võtmete jaoks. Sarnaselt EnumSetiga on see nii väga tõhus ja pakub märkimisväärseid jõudluse parandusi tavalise enum-klahvidega HashMapi kaudu. EnumMap säilitab ka oma võtmete loomuliku järjestuse.
Kokkuvõtteks võib öelda, et Java enumid pakuvad tüübikindlat, tõhusat ja mugavat viisi seotud konstantidega töötamiseks. Selles artiklis pakutav lahendus näitab, kuidas hankida järgmine loendi väärtus konkreetse loendi konstandi korral. Lisaks uurisime mõningaid võimsaid Java teeke ja funktsioone, mis aitavad meie tööd enumitega (nt EnumSet ja EnumMap) sujuvamaks muuta.