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.