Összekötő karakterláncok Java-ban

1. Bemutatkozás

A Java jelentős számú módszert és osztályt kínál, amelyeknek dedikált összefűzve Húrok.

Ebben az oktatóanyagban többükbe is belemerülünk vázoljon fel néhány gyakori buktatót és rossz gyakorlatot.

2. StringBuilder

Először az alázatos StringBuilder. Ez az osztály tömböt ad Húr-közműépítés ez megkönnyíti a munkát Húr manipuláció.

Készítsünk egy gyors példát Húr összefűzés a StringBuilder osztály:

StringBuilder stringBuilder = new StringBuilder (100); stringBuilder.append ("Baeldung"); stringBuilder.append ("is"); stringBuilder.append ("fantasztikus"); assertEquals ("Baeldung fantasztikus", stringBuilder.toString ());

Belsőleg, StringBuilder változékony karaktertömböt tart fenn. Kódmintánkban kijelentettük, hogy van egy kezdeti mérete 100 keresztül StringBuilder konstruktőr. Ezen méretmegjelölés miatt a StringBuilder nagyon hatékony lehetösszefűzés módja Húrok.

Azt is érdemes megjegyezni, hogy a StringBuffer osztály a szinkronizált változata StringBuilder.

Bár a szinkronizálás gyakran egyet jelent a szálbiztonsággal, ennek ellenére nem ajánlott többszálas alkalmazásokban történő használatra StringBuffer építő minta. Míg a szinkronizált módszerre irányuló egyedi hívások szálbiztonságosak, a többszörös hívások nem.

3. Addition Operator

A következő az összeadás operátor (+). Ez ugyanaz az operátor, amely számok hozzáadását eredményezi, és az túlterhelve összefűzni, ha alkalmazzák Húrok.

Vessünk egy gyors pillantást ennek működésére:

String myString = "A" + "gyors" + "barna" + "róka ..."; assertEquals ("A gyors barna róka ...", myString);

Első pillantásra ez sokkal tömörebbnek tűnhet, mint a StringBuilder választási lehetőség. Amikor azonban a forráskód összeáll, a + szimbólum jelentése: StringBuilder.append () hívások. Ennek köszönhetően, keverés a StringBuilder és + módszer az összefűzés az rossz gyakorlatnak tekinthető.

Ezenkívül Húr Kerülni kell az összefűzést a + operátor segítségével egy hurokban. Mivel a Húr Az objektum megváltoztathatatlan, minden összefűzési felhívás új eredményt fog eredményezni Húr létrehozandó objektum.

4. Húr Mód

A Húr maga az osztály rengeteg módszert kínál az összefűzéshez Húrok.

4.1. String.concat

Nem meglepő módon a String.concat módszer az első hívási portunk, amikor megpróbáljuk összefűzni Húr tárgyakat. Ez a módszer a Húr objektum, így a módszer láncolása hasznos funkció.

Karakterlánc myString = "Mindkettő" .concat ("ingatag") .concat ("törpék") .concat ("jinx") .concat ("én") .concat ("disznó") .concat ("kvíz"); assertEquals ("Mindkét ingatag törpe jinx a disznó kvízem", myString);

Ebben a példában a láncunkat egy Húr szó szerint, az konkat módszer lehetővé teszi számunkra, hogy láncoljuk a hívásokat a további csatoláshoz Húrok.

4.2. Karakterlánc.formátum

Következik a Karakterlánc.formátum módszer, amely lehetővé teszi számunkra, hogy különféle Java-okat injektáljunk Tárgyak ba be Húr sablon.

A Karakterlánc.formátum metódus aláírás a egyetlen Húr sablonunkat jelölve. Ez a sablon '%' karaktereket tartalmaz, amelyek a különféle helyeket jelölik Tárgyakkell elhelyezni ezen belül.

Miután a sablonunk deklarálva van, akkor vesz egy varargst Tárgy tömb, amelyet injektálnak a sablonba.

Nézzük meg, hogyan működik ez egy gyors példával:

String myString = Karakterlánc.formátum ("% s% s% .2f% s% s,% s ...", "I", "evett", 2.5056302, "áfonya", "piték", "hopp"); assertEquals ("2,51 áfonyás pitét ettem, hopp ...", myString);

Amint azt fentebb láthatjuk, a módszer befecskendezte a mi Húrok a megfelelő formátumba.

4.3. Húr.csatlakozzon (Java 8+)

Ha a mi alkalmazás Java 8-on futvagy a fenti, kihasználhatjuk a Húr.csatlakozzon módszer. Ezzel megtehetjük csatlakozzon a Húrok közös határolóval, biztosítva, hogy szóköz ne maradjon el.

Karakterlánc [] karakterlánc = {"vagyok", "futok", "ki", "of", "pangrams!"}; String myString = String.join ("", húrok); assertEquals ("Elfogy a pangram!", myString); 

A módszer hatalmas előnye, hogy nem kell aggódnunk a húrjaink közötti határoló miatt.

5. StringJoiner (Java 8+)

StringJoiner az összes kivonatát Húr.csatlakozzon funkcionalitás egy egyszerűen használható osztályba. A A konstruktor elválasztójelet vesz, választható előtaggal és utótaggal. Mellékelhetjük Húrok a jól megnevezett felhasználásával hozzá módszer.

StringJoiner fruitJoiner = új StringJoiner (","); fruitJoiner.add ("Alma"); fruitJoiner.add ("Narancs"); fruitJoiner.add ("Banán"); assertEquals ("Alma, narancs, banán", fruitJoiner.toString ());

Ennek az osztálynak a használatával a Húr.csatlakozzon módszer, csatolhatjuk Húrok ahogy a program fut; Nem kell először létrehozni a tömböt!

Irány a cikkünkre StringJoiner további információk és példák.

6. Tömbök.String

A tömbök témájában a Sor osztály is tartalmaz egy praktikus Sztring metódus, amely szépen formázza az objektumok tömbjét. A Tömbök.Sztring módszer a Sztring bármely zárt objektum metódusa - ezért meg kell győződnünk arról, hogy definiáltuk.

Karakterlánc [] myFavouriteLanguages ​​= {"Java", "JavaScript", "Python"}; String toString = Tömbök.toString (myFavouriteLanguages); assertEquals ("[Java, JavaScript, Python]", toString);

Sajnos a Tömbök.Sztring metódus nem testreszabható és csak kimenetek a Húr szögletes zárójelbe zárva.

7. Gyűjtők.csatlakozás (Java 8+)

Végül vessünk egy pillantást a Gyűjtők.csatlakozás módszer, amely lehetővé teszi számunkra, hogy csatornázzuk az a kimenetét Folyam egyetlen egységbe Húr.

List awesomeAnimals = Arrays.asList ("Cápa", "Panda", "Armadillo"); String animalString = félelmetesÁllatok.stream (). Gyűjt (Gyűjtők.csatlakozó (",")); assertEquals ("Cápa, Panda, Armadillo", animalString);

A folyamok használata feloldja a Java 8 összes funkcióját Folyam API, például szűrés, leképezés, iterálás és még sok más.

8. Csomagolás

Ebben a cikkben a mélyen belemerül az összefűzéshez használt osztályok és módszerek sokaságába HúrokJava nyelven.

Mint mindig, a forráskód is elérhető a GitHubon.