Izjava o problemu
S obzirom na enum konstantu, cilj je pronaći sljedeću enum vrijednost u nizu. Ako je data konstanta posljednja na listi, tada bi prva vrijednost trebala biti vraćena kao sljedeća vrijednost.
rastvor
Da bismo riješili ovaj problem, počnimo kreiranjem enum klase pod nazivom DaysOfWeek kao primjer. Zatim ćemo nastaviti sa dodavanjem metode zvane getNext() koja vraća sljedeću enum vrijednost u nizu.
Evo korak-po-korak prolaska kroz kod:
1. Prvo kreirajte enum klasu pod nazivom DaysOfWeek i definirajte njene enum konstante.
public enum DaysOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; }
2. Zatim dodajte metodu getNext() u klasu nabrajanja DaysOfWeek. Ova metoda će vratiti sljedeću enum vrijednost na osnovu trenutne enum vrijednosti.
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. GetNext() metoda radi na sljedeći način:
– Prvo provjeravamo da li je trenutna enum vrijednost posljednja na listi (upoređivanjem redne vrijednosti sa dužinom niza vrijednosti minus 1).
– Ako je trenutna enum vrijednost posljednja, vraćamo prvu enum vrijednost (tj. PONEDJELJAK).
– U suprotnom, vraćamo sljedeću enum vrijednost koristeći rednu vrijednost za indeksiranje u niz vrijednosti.
Sada možemo koristiti metodu getNext() da dohvatimo sljedeću enum vrijednost za bilo koju datu enum konstantu.
Korištenje biblioteka i funkcija
Java nudi nekoliko biblioteka i funkcija koje su korisne kada radite sa enumima. Evo nekoliko primjera:
EnumSet
- Java EnumSet je specijalizovan Postavite implementaciju dizajniranu posebno za enume. Veoma je efikasan i pruža metode za izvođenje grupnih operacija, kao što su komplement, unija, presek i razlika.
EnumMap
- EnumMap je još jedna specijalizovana kolekcija dizajnirana posebno za enum ključeve. Slično kao EnumSet, jeste visoko efikasan i nudi značajna poboljšanja performansi preko standardnog HashMapa sa enum ključevima. EnumMap takođe održava prirodni redosled svojih ključeva.
U zaključku, enume u Javi nude siguran, efikasan i zgodan način rada sa povezanim konstantama. Rješenje koje je dato u ovom članku pokazuje kako dohvatiti sljedeću enum vrijednost s obzirom na specifičnu enum konstantu. Osim toga, istražili smo neke moćne Java biblioteke i funkcije koje nam mogu pomoći da pojednostavimo naš rad s enumima, kao što su EnumSet i EnumMap.