Hogyan lehet megfordítani egy karakterláncot a Java-ban

1. Áttekintés

Ebben a gyors bemutatóban megnézzük hogyan tudjuk megfordítani a Húr Java-ban.

Ezt a feldolgozást egyszerű Java megoldásokkal kezdjük meg. Ezután megnézzük azokat a lehetőségeket, amelyeket a harmadik fél könyvtárai, például az Apache Commons nyújtanak.

Továbbá bemutatjuk hogyan lehet megfordítani a szavak sorrendjét egy mondatban.

2. Egy hagyományos mert Hurok

Tudjuk, hogy a karakterláncok megváltoztathatatlanok a Java-ban. A változhatatlan tárgy olyan tárgy, amelynek a belső állapot állandó marad miután teljesen létrejött.

Ezért nem fordíthatjuk vissza a Húr módosításával. Létre kell hoznunk egy másikat Húr emiatt.

Először nézzünk meg egy alap példát az a használatával mert hurok. Iterálni fogunk a Húr bemenet az utolsótól az elsőig, és összefűz minden karaktert egy újvá Húr:

public String reverse (String input) {if (input == null) {return input; } Karakterlánc kimenet = ""; for (int i = input.length () - 1; i> = 0; i--) {output = output + input.charAt (i); } visszatérő kimenet; }

Mint láthatjuk, óvatosnak kell lennünk a sarok eseteknél, és külön kell kezelnünk őket.

A példa jobb megértése érdekében elkészíthetünk egységtesztet:

@Test public void whenReverseIsCalled_ThenCorrectStringIsReturned () {String reversed = ReverseStringExamples.reverse ("cat"); String reversedNull = ReverseStringExamples.reverse (null); String reversedEmpty = ReverseStringExamples.reverse (StringUtils.EMPTY); assertEquals ("tac", fordított); assertEquals (null, fordítottNull); assertEquals (StringUtils.EMPTY, fordítottEmpty); }

3. A StringBuilder

A Java is kínál olyan mechanizmusokat, mint a StringBuilder és StringBuffer amelyek megváltoztatható karaktersorozatot hoznak létre. Ezeknek az objektumoknak van egy fordított() módszer, amely segít elérni a kívánt eredményt.

Itt létre kell hoznunk a StringBuilder tól Húr bemenetet, majd hívja meg a fordított() módszer:

public String reverseUsingStringBuilder (String input) {if (input == null) {return null; } StringBuilder output = új StringBuilder (input) .reverse (); return output.toString (); }

4. Apache Commons

Az Apache Commons egy népszerű Java-könyvtár, sok segédosztályral, beleértve a karakterlánc-manipulációt is.

Szokás szerint az Apache Commons használatának megkezdéséhez először hozzá kell adnunk a Maven-függőséget:

 org.apache.commons commons-lang3 3.9 

A StringUtils osztályra van szükségünk itt, mert ez biztosítja a fordított() módszerhez hasonló StringBuilder.

A könyvtár használatának egyik előnye az hasznossági módszerei teljesítenek nulla- biztonságos műveletek. Tehát nem kell külön kezelnünk az éles eseteket.

Hozzunk létre egy módszert, amely megfelel a célunknak és használja a StringUtils osztály:

public String reverseUsingApacheCommons (String input) {return StringUtils.reverse (input); }

Ezt a három módszert megvizsgálva minden bizonnyal azt mondhatjuk, hogy a harmadik a a legegyszerűbb és a legkevésbé hibára hajlamos a megfordítás módja a Húr.

5. A szavak sorrendjének megfordítása mondatban

Tegyük fel, hogy van egy mondatunk szóközökkel elválasztott szavakkal és írásjelek nélkül. Meg kell fordítanunk ebben a mondatban a szavak sorrendjét.

Két lépésben oldhatjuk meg ezt a problémát: a mondat elválasztásával térelválasztóval, majd a szavak összefűzésével fordított sorrendben.

Először klasszikus megközelítést mutatunk be. Az S-t fogjuk használnitring.split () módszerrel a probléma első részének teljesítése érdekében. Ezután vissza fogunk ismételni a kapott tömbön, és összefűzzük a szavakat az a segítségével StringBuilder. Természetesen helyet kell tennünk a szavak között is:

public String reverseTheOrderOfWords (String mondat) {if (mondat == null) {return null; } StringBuilder kimenet = new StringBuilder (); Karakterlánc [] szavak = mondat.split (""); for (int i = szavak.hossz - 1; i> = 0; i--) {output.append (szavak [i]); output.append (""); } return output.toString (). trim (); }

Másodszor fontolóra vesszük az Apache Commons könyvtár használatát. Ismét segít nekünk egy olvashatóbb és kevésbé hibára hajlamos kód elérésében. Csak hívnunk kell a StringUtils.reverseDelimited () metódus a bemeneti mondattal és a határolóval argumentumként:

public String reverseTheOrderOfWordsUsingApacheCommons (String mondat) {return StringUtils.reverseDelimited (mondat, ''); }

6. Következtetés

Ebben az oktatóanyagban először megvizsgáltuk a Húr Java-ban. Végigvizsgáltunk néhány példát az alapvető Java használatával, valamint egy olyan népszerű harmadik fél könyvtárával, mint az Apache Commons.

Ezután láttuk, hogyan lehet két lépésben megfordítani a szavak sorrendjét egy mondatban. Ezek a lépések hasznosak lehetnek a mondat egyéb permutációinak elérésében is.

Szokás szerint az ebben az oktatóanyagban bemutatott összes kódminta elérhető a GitHubon.