Kako obrnuti niz u Javi
1. Pregled
U ovom ćemo kratkom članku pokazati kako možemo obrnuti niz u Javi.
Vidjet ćemo nekoliko različitih načina kako to učiniti pomoću čistih rješenja temeljenih na Javi 8 - neki od njih mutiraju postojeći niz, a neki stvaraju novi.
Dalje ćemo razmotriti dva rješenja koja koriste vanjske knjižnice - jedno pomoću Apache Commons Lang i jedan koji koristi Google Guava.
2. Definiranje problema
Osnovna ideja je preokrenuti redoslijed elemenata u nizu. Dakle, ako se dobije niz:
voće = {"jabuke", "rajčice", "banane", "guave", "ananas"}
Željeli bismo dobiti:
invertedFruits = {"ananas", "guave", "banane", "rajčice", "jabuke"}
Pogledajmo neke načine na koje to možemo učiniti.
3. Korištenje tradicionalnog za Petlja
Prvi način na koji bismo mogli razmišljati o invertiranju niza je pomoću a za petlja:
void invertUsingFor (Object [] array) {for (int i = 0; i <array.length / 2; i ++) {Temp objekta = niz [i]; niz [i] = niz [niz.duljina - 1 - i]; niz [niz.duljina - 1 - i] = temp; }}
Kao što vidimo, kod se ponavlja kroz polovicu niza, mijenjajući elemente u simetričnim položajima.
Koristimo privremenu varijablu kako tijekom iteracije ne bismo izgubili vrijednost trenutnog položaja niza.
4. Korištenje Jave 8 Stream API
Također možemo invertirati niz pomoću Stream API-ja:
Object [] invertUsingStreams (Object [] array) {return IntStream.rangeClosed (1, array.length) .mapToObj (i -> array [array.length - i]) .toArray (); }
Ovdje koristimo metodu IntStream.range za generiranje sekvencijalnog toka brojeva. Zatim mapiramo ovaj niz u indekse nizova u silaznom redoslijedu.
5. Korištenje Collections.reverse ()
Pogledajmo kako invertirati niz pomoću Collections.reverse () metoda:
javna void invertUsingCollectionsReverse (polje Object []) {Lista popisa = Arrays.asList (niz); Collections.reverse (popis); }
U usporedbi s prethodnim primjerima, ovo je čitljiviji način izvršavanja zadatka.
6. Korištenje Apache Commons Lang-a
Druga mogućnost za invertiranje niza je upotreba Apache Commons Lang knjižnica. Da bismo je koristili, prvo moramo uključiti knjižnicu kao ovisnost:
org.apache.commons commons-lang3 3.5
Najnovija verzija Zajednički jezik možete pronaći u Maven Central.
Iskoristimo ArrayUtils klasa za invertiranje niza:
javna void invertUsingCommonsLang (polje Object []) {ArrayUtils.reverse (niz); }
Kao što vidimo, ovo je rješenje prilično jednostavno.
7. Korištenje Google Guave
Još je jedna mogućnost korištenje Google Guava knjižnica. Baš kao što smo to učinili s Zajednički jezik, knjižnicu ćemo uključiti kao ovisnost:
com.google.guava guava 22.0
Najnoviju verziju možete pronaći na Maven Central.
Tada možemo koristiti obrnuti metoda u GuavaPopisi klasa za invertiranje niza:
javni Object [] invertUsingGuava (Object [] niz) {Lista popisa = Arrays.asList (niz); Obrnuti popis = Lists.reverse (popis); povratak reversed.toArray (); }
8. Zaključak
U ovom smo članku pogledali nekoliko različitih načina za invertiranje niza u Javi. Pokazali smo nekoliko rješenja koja koriste samo jezgru Jave i dva druga rješenja koja koriste biblioteke trećih strana - Zajednički jezik i Guava.
Svi ovdje prikazani uzorci koda mogu se naći na GitHubu - ovo je Maven projekt, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.