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.