java-char-array-to-string
Javaで文字配列を文字列に変換する
1. 概要
このクイックチュートリアルでは、Javaで文字配列を_String_に変換するさまざまな方法について説明します。
2. 文字列コンストラクタ
_String_クラスには、引数として_char_配列を受け入れる* constructorがあります:*
@Test
public void whenStringConstructor_thenOK() {
final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' };
String string = new String(charArray);
assertThat(string, is("baeldung"));
}
これは、_char_配列を_String_に変換する最も簡単な方法の1つです。 内部で_String#valueOf_を呼び出して、_String_オブジェクトを作成します。
3. String.valueOf()
_valueOf()、_と言えば、直接使用することもできます:
@Test
public void whenStringValueOf_thenOK() {
final char[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' };
String string = String.valueOf(charArray);
assertThat(string, is("baeldung"));
}
_String#copyValueOf_は、_valueOf()_メソッドとセマンティック上は同等ですが、最初のいくつかのJavaリリースでのみ意味を持つ別のメソッドです。 現在、* copyValueOf()_メソッドは冗長であり、使用することはお勧めしません。*
4. StringBuilder’s toString()
_char_配列の配列から_String_を形成したい場合はどうなりますか?
次に、最初に_StringBuilder_インスタンスをインスタンス化し、その_append(char [])_メソッドを使用してすべてのコンテンツを一緒に追加します。
後で、__ toString()__メソッドを使用して_String_表現を取得します。
@Test
public void whenStringBuilder_thenOK() {
final char[][] arrayOfCharArray = { { 'b', 'a' }, { 'e', 'l', 'd', 'u' }, { 'n', 'g' } };
StringBuilder sb = new StringBuilder();
for (char[] subArray : arrayOfCharArray) {
sb.append(subArray);
}
assertThat(sb.toString(), is("baeldung"));
}
必要な正確な長さの_StringBuilder_をインスタンス化することにより、上記のコードをさらに最適化できます。
5. Java 8ストリーム
_Arrays.stream(T [] object)_メソッドを使用すると、タイプ_T_の配列でストリームを開くことができます。
_Character_配列があることを考慮すると、* _ Collectors.joining()_操作を使用して_String_インスタンスを形成できます:*
@Test
public void whenStreamCollectors_thenOK() {
final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' };
Stream<Character> charStream = Arrays.stream(charArray);
String string = charStream.map(String::valueOf).collect(Collectors.joining());
assertThat(string, is("baeldung"));
}
このアプローチの注意点は、各_Character_要素で_valueOf()_を呼び出しているため、かなり遅いことです。
6. グアバ共通基地_Joiner_
ただし、作成する必要がある文字列は区切り文字列であるとしましょう。 グアバには便利な方法があります:
@Test
public void whenGuavaCommonBaseJoiners_thenOK() {
final Character[] charArray = { 'b', 'a', 'e', 'l', 'd', 'u', 'n', 'g' };
String string = Joiner.on("|").join(charArray);
assertThat(string, is("b|a|e|l|d|u|n|g"));
}
繰り返しますが、* _join()_メソッドは_Character_配列のみを受け入れ、プリミティブ_char_配列は受け入れません。*
7. 結論
このチュートリアルでは、特定の文字配列をJavaの_String_表現に変換する方法を検討しました。
いつものように、すべてのコード例はhttps://github.com/eugenp/tutorials/tree/master/java-strings-3[GitHubで]にあります。