Preveďte pole znakov na reťazce v Jave
1. Prehľad
V tomto rýchlom výučbe sa budeme venovať rôznym spôsobom, ako previesť pole znakov na a String v Jave.
2. Sláčikový konštruktor
The String trieda má a konštruktér, ktorý akceptuje a char pole ako argument:
@Test public void whenStringConstructor_thenOK () {final char [] charArray = {'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g'}; Reťazcový reťazec = nový Reťazec (charArray); assertThat (retazec, je ("baeldung")); }
Toto je jeden z najjednoduchších spôsobov prevodu a char pole do a String. Vnútorne sa dovoláva Reťazec # valueOf vytvoriť String objekt.
3. String.valueOf ()
A keď už hovoríme o hodnota(), môžeme ho dokonca použiť priamo:
@Test public void whenStringValueOf_thenOK () {final char [] charArray = {'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g'}; Reťazcový reťazec = String.valueOf (charArray); assertThat (retazec, je ("baeldung")); }
Reťazec # copyValueOf je ďalšia metóda, ktorá je sémanticky ekvivalentná s hodnota() Táto metóda však mala význam iba v niekoľkých prvých vydaniach Java. Od dnešného dňa, the copyValueOf () metóda je nadbytočná a neodporúčame ju používať.
4. StringBuilder‘S natiahnuť()
Čo ak chceme založiť a String z poľa char polia?
Potom môžeme najskôr vytvoriť inštanciu a StringBuilder inštancie a použiť jeho pridať (char []) metóda na pripojenie všetkého obsahu.
Neskôr použijeme natiahnuť() metóda na získanie jeho String zastúpenie:
@Test public void whenStringBuilder_thenOK () {final char [] [] arrayOfCharArray = {{'b', 'a'}, {'e', 'l', 'd', 'u'}, {'n', 'g'}}; StringBuilder sb = nový StringBuilder (); pre (char [] subArray: arrayOfCharArray) {sb.append (subArray); } assertThat (sb.toString (), je ("baeldung")); }
Vyššie uvedený kód môžeme ďalej optimalizovať vytvorením inštancie StringBuilder presnej dĺžky, ktorú potrebujeme.
5. Prúdy Java 8
S Arrays.stream (objekt T []) metódou môžeme otvoriť prúd cez pole typu T.
Vzhľadom na to, že máme a Postava pole, môžeme použiť Collectors.joining () operácia na vytvorenie a String inštancia:
@Test public void whenStreamCollectors_thenOK () {final Character [] charArray = {'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g'}; Stream charStream = Arrays.stream (charArray); Reťazcový reťazec = charStream.map (String :: valueOf) .collect (Collectors.joining ()); assertThat (retazec, je ("baeldung")); }
Výhradou tohto prístupu je, že sa dovolávame: hodnota() nad každým Postava živel a tak to bude dosť pomalé.
6. Spoločná základňa Guava Stolár
Povedzme však, že reťazec, ktorý musíme vytvoriť, je reťazec s oddeľovačmi. Guava nám poskytuje užitočnú metódu:
@Test public void whenGuavaCommonBaseJoiners_thenOK () {final Character [] charArray = {'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g'}; Reťazcový reťazec = Joiner.on ("|"). Join (charArray); assertThat (reťazec, je ("b | a | e | l | d | u | n | g")); }
Opäť si všimnite, že the pripojiť sa () metóda bude akceptovať iba a Postava pole a nie primitiv char pole.
7. Záver
V tomto tutoriáli sme preskúmali spôsoby prevodu daného znakového poľa na jeho String zastúpenie v Jave.
Ako obvykle nájdete všetky príklady kódov na serveri GitHub.