Kako obrnuti niz u Javi

1. Pregled

U ovom brzom vodiču vidjet ćemo kako možemo preokrenuti a Niz na Javi.

Započet ćemo s ovom obradom koristeći obična Java rješenja. Zatim ćemo pogledati opcije koje pružaju neovisne knjižnice poput Apache Commons.

Nadalje, demonstrirat ćemo kako preokrenuti redoslijed riječi u rečenici.

2. Tradicionalni za Petlja

Znamo da su nizovi nepromjenjivi u Javi. Nepromjenjivi objekt je objekt čiji unutarnje stanje ostaje konstantno nakon što je u cijelosti stvoren.

Stoga ne možemo preokrenuti a Niz mijenjajući ga. Moramo stvoriti drugu Niz zbog ovog razloga.

Prvo, pogledajmo osnovni primjer pomoću a za petlja. Idemo ponoviti Niz unos od zadnjeg do prvog elementa i spajanje svakog znaka u novi Niz:

public String reverse (String input) {if (input == null) {return input; } Izlaz niza = ""; for (int i = input.length () - 1; i> = 0; i--) {output = output + input.charAt (i); } povratni izlaz; }

Kao što vidimo, trebamo biti oprezni u kutnim slučajevima i prema njima se ponašati odvojeno.

Kako bismo bolje razumjeli primjer, možemo napraviti jedinstveni test:

@Test public void whenReverseIsCalled_ThenCorrectStringIsReturned () {String reversed = ReverseStringExamples.reverse ("mačka"); Niz reversedNull = ReverseStringExamples.reverse (null); Niz reversedEmpty = ReverseStringExamples.reverse (StringUtils.EMPTY); assertEquals ("tac", obrnuto); assertEquals (null, reversedNull); assertEquals (StringUtils.EMPTY, reversedEmpty); }

3. A StringBuilder

Java također nudi neke mehanizme poput StringBuilder i StringBuffer koji stvaraju promjenjivi niz znakova. Ti objekti imaju obrnuti () metoda koja nam pomaže postići željeni rezultat.

Ovdje moramo stvoriti StringBuilder od Niz unesite, a zatim nazovite obrnuti () metoda:

javni String reverseUsingStringBuilder (String input) {if (input == null) {return null; } StringBuilder output = novi StringBuilder (ulaz) .reverse (); vrati izlaz.toString (); }

4. Apache Commons

Apache Commons je popularna Java knjižnica s puno klasa uslužnih programa, uključujući manipulaciju nizom.

Kao i obično, da bismo započeli koristiti Apache Commons, prvo moramo dodati ovisnost Maven:

 org.apache.commons commons-lang3 3.9 

The StringUtils klasa je ono što nam ovdje treba jer pruža obrnuti () metoda slična StringBuilder.

Jedna od prednosti korištenja ove knjižnice je ta njegove korisne metode izvode null-sigurne operacije. Dakle, rubne slučajeve ne moramo tretirati odvojeno.

Stvorimo metodu koja ispunjava našu svrhu i koristi StringUtils razred:

javni String reverseUsingApacheCommons (unos niza) {return StringUtils.reverse (input); }

Sada, gledajući ove tri metode, sigurno možemo reći da je treća metoda najjednostavniji i najmanje podložan pogreškama način preokretanja a Niz.

5. Obrtanje reda riječi u rečenici

Pretpostavimo sada da imamo rečenicu s riječima odvojenim razmacima i bez interpunkcijskih znakova. Moramo preokrenuti redoslijed riječi u ovoj rečenici.

Taj problem možemo riješiti u dva koraka: dijeljenjem rečenice razdjelnikom razmaka, a zatim spajanjem riječi obrnutim redoslijedom.

Prvo ćemo pokazati klasični pristup. Koristit ćemo String.split () metodom kako bismo ispunili prvi dio našeg problema. Dalje, vratit ćemo se unatrag kroz rezultirajući niz i spojiti riječi pomoću a StringBuilder. Naravno, trebamo dodati i razmak između ovih riječi:

javni String reverseTheOrderOfWords (niska rečenica) {if (rečenica == null) {return null; } StringBuilder output = novi StringBuilder (); Niz [] riječi = rečenica.split (""); for (int i = words.length - 1; i> = 0; i--) {output.append (words [i]); output.append (""); } vrati izlaz.toString (). trim (); }

Drugo, razmotrit ćemo upotrebu knjižnice Apache Commons. Još jednom, pomaže nam u postizanju čitljivijeg i manje podložnog pogreškama koda. Moramo nazvati samo StringUtils.reverseDelimited () metoda s ulaznom rečenicom i graničnikom kao argumentima:

javni String reverseTheOrderOfWordsUsingApacheCommons (niska rečenica) {return StringUtils.reverseDelimited (rečenica, ''); }

6. Zaključak

U ovom uputstvu prvo smo pogledali različite načine okretanja a Niz na Javi. Prošli smo kroz neke primjere korištenja jezgre Java, kao i korištenja popularne biblioteke treće strane poput Apache Commons.

Dalje, vidjeli smo kako u dva koraka preokrenuti redoslijed riječi u rečenici. Ovi koraci također mogu biti korisni u postizanju drugih permutacija rečenice.

Kao i obično, svi uzorci koda prikazani u ovom vodiču dostupni su na GitHubu.