Konverter tegnarray til streng i Java

1. Oversigt

I denne hurtige vejledning dækker vi forskellige måder at konvertere et tegnarray til en Snor i Java.

2. Strengkonstruktør

Det Snor klasse har en konstruktør, der accepterer en char array som argument:

@Test offentlig ugyldig nårStringConstructor_thenOK () {final char [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Strengstreng = ny streng (charArray); assertThat (streng, er ("baeldung")); }

Dette er en af ​​de nemmeste måder at konvertere en char array til en Snor. Det påberåber sig internt String # valueOf at oprette en Snor objekt.

3. String.valueOf ()

Og taler om Værdi af(), vi kan endda bruge det direkte:

@Test offentlig ugyldig nårStringValueOf_thenOK () {final char [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Strengstreng = String.valueOf (charArray); assertThat (streng, er ("baeldung")); }

String # copyValueOf er en anden metode, der semantisk svarer til Værdi af() metode, men var kun af nogen betydning i de første få Java-udgivelser. Fra i dag, det copyValueOf () metoden er overflødig, og vi anbefaler ikke at bruge den.

4. StringBuilder'S toString ()

Hvad hvis vi vil danne en Snor fra en række char arrays?

Derefter kan vi først instantiere en StringBuilder eksempel og brug dens tilføje (char []) metode til at tilføje alt indhold sammen.

Senere bruger vi toString () metode til at få sin Snor repræsentation:

@Test offentlig ugyldig nårStringBuilder_thenOK () {final char [] [] arrayOfCharArray = {{'b', 'a'}, {'e', 'l', 'd', 'u'}, {'n', 'g'}}; StringBuilder sb = ny StringBuilder (); for (char [] subArray: arrayOfCharArray) {sb.append (subArray); } assertThat (sb.toString (), er ("baeldung")); }

Vi kan yderligere optimere ovenstående kode ved at instantere StringBuilder af den nøjagtige længde, vi har brug for.

5. Java 8 Streams

Med Arrays.stream (T [] objekt) metode, kan vi åbne en stream over en matrix af typen T.

I betragtning af at vi har en Karakter matrix, vi kan bruge Collectors.joining () operation for at danne en Snor eksempel:

@Test offentligt ugyldigt nårStreamCollectors_thenOK () {final Character [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Stream charStream = Arrays.stream (charArray); Strengstreng = charStream.map (String :: valueOf) .collect (Collectors.joining ()); assertThat (streng, er ("baeldung")); }

Advarslen med denne tilgang er, at vi påberåber os Værdi af() over hver Karakter element, og så bliver det ret langsomt.

6. Guava fælles base Snedker

Lad os dog sige, at den streng, vi skal oprette, er en afgrænset streng. Guava giver os en praktisk metode:

@Test offentlig ugyldigt nårGuavaCommonBaseJoiners_thenOK () {final Character [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Strengstreng = Joiner.on ("|"). Join (charArray); assertThat (streng, er ("b | a | e | l | d | u | n | g")); }

Igen, bemærk det det tilslutte() metode accepterer kun en Karakter array og ikke det primitive char array.

7. Konklusion

I denne vejledning undersøgte vi måder at konvertere et givet tegnarray til dets Snor repræsentation i Java.

Som sædvanligt kan alle kodeeksempler findes på GitHub.