Javaで文字列配列を1つの文字列に変換・連結する方法を徹底解説
はじめに
Javaプログラミングでは、複数の文字列が格納された配列を、1つの文字列に連結したい場面がよくあります。この記事では、代表的な3つの方法――StringBuffer、Arrays.toString()メソッド、そしてJava 8で導入されたStringJoinerクラス――を使った変換手順を、サンプルコードと実行結果とあわせてわかりやすく解説します。記事の最後では、より簡潔に書けるString.join()やStream APIについても紹介します。
方法1:StringBufferを使う
古くから使われる定番のアプローチです。手順は以下のとおりです。
空のStringBufferオブジェクトを作成します。
forループなどでString配列の要素を順番に走査します。
ループ内でappend()メソッドを使い、各要素をStringBufferに追加していきます。
最後にtoString()メソッドを呼び出し、StringBufferをString型に変換します。
サンプルコード
public class ArrayOfStrings {
public static void main(String args[]) {
String stringArray[] = {"Hello ", " how", " are", " you", " welcome", " to", " Tutorialspoint"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < stringArray.length; i++) {
sb.append(stringArray[i]);
}
String str = sb.toString();
System.out.println(str);
}
}
実行結果
Hello how are you welcome to Tutorialspoint
方法2:ArraysクラスのtoString()メソッドを使う
java.util.ArraysクラスのtoString()メソッドは、配列を受け取り、その内容を「[要素1, 要素2, ...]」という形式の文字列として返します。引数にはString配列だけでなく、任意の型の配列を渡すことができます。
ただし注意点があります。このメソッドの出力には角括弧 [ ] とカンマ , が含まれるため、純粋に文字列を連結したいだけの場合には不向きです。主にデバッグ時に配列の中身を手軽に確認したい場合に便利なメソッドだと覚えておきましょう。
サンプルコード
import java.util.Arrays;
public class ArrayOfStrings {
public static void main(String args[]) {
String stringArray[] = {"Hello ", " how", " are", " you", " welcome", " to", " Tutorialspoint"};
String str = Arrays.toString(stringArray);
System.out.println(str);
}
}
実行結果
[Hello, how, are, you, welcome, to, Tutorialspoint]
方法3:StringJoinerクラスを使う(Java 8以降)
Java 8で導入されたStringJoinerクラスを使うと、指定した区切り文字(デリミタ)で区切られた文字列シーケンスを簡単に構築できます。
add()メソッドは、CharSequenceインターフェースを実装するオブジェクト(String、StringBuffer、StringBuilderなど)を受け取り、現在のJoinerに追加します。追加時には、コンストラクタで指定した区切り文字が前の要素との間に自動的に挿入されます。
toString()メソッドは、現在のStringJoinerの内容をStringオブジェクトとして返します。
具体的な手順は以下のとおりです。
StringJoinerのオブジェクトを作成します(区切り文字が不要な場合は空文字 "" を指定します)。
ループでString配列を走査します。
ループ内でadd()メソッドにより、配列の各要素をStringJoinerに追加します。
最後にtoString()メソッドでStringに変換します。
サンプルコード
import java.util.StringJoiner;
public class ArrayOfStrings {
public static void main(String args[]) {
String stringArray[] = {"Hello", " how", " are", " you", " welcome", " to", " Tutorialspoint"};
StringJoiner joiner = new StringJoiner("");
for(int i = 0; i < stringArray.length; i++) {
joiner.add(stringArray[i]);
}
String str = joiner.toString();
System.out.println(str);
}
}
実行結果
Hello how are you welcome to Tutorialspoint
おまけ:String.join()とStream APIでさらに簡潔に
Java 8以降が使える環境であれば、String.join()メソッドやStream APIを利用することで、ループを書かずに1行で同じ処理を実現できます。
サンプルコード
import java.util.Arrays;
import java.util.stream.Collectors;
public class ArrayOfStrings {
public static void main(String args[]) {
String stringArray[] = {"Hello ", " how", " are", " you", " welcome", " to", " Tutorialspoint"};
// String.join() を使う方法
String joined = String.join("", stringArray);
// Stream API を使う方法
String streamed = Arrays.stream(stringArray).collect(Collectors.joining());
System.out.println(joined);
System.out.println(streamed);
}
}
実行結果
Hello how are you welcome to Tutorialspoint Hello how are you welcome to Tutorialspoint
まとめ:使い分けのポイント
StringBuffer / StringBuilder:ループ処理と組み合わせた柔軟な連結に向いた定番の方法。単純連結ならStringBuilderでも十分です。
Arrays.toString():配列の内容確認(デバッグ)に便利。ただし角括弧とカンマが出力に含まれる点に注意。
StringJoiner:カンマ区切りなど、区切り文字を指定した連結に最適。接頭辞・接尾辞も設定可能です。
String.join() / Stream API:最も簡潔に書けるモダンな方法。Java 8以降の環境なら第一候補になります。
目的やJavaのバージョンに応じて、これらの方法を使い分けてみてください。
-
Javaで文字列を比較する方法|equals()とequalsIgnoreCase()の使い分けを徹底解説
Javaで文字列の等価性を比較する際は、Stringクラスが提供するequalsメソッドまたはequalsIgnoreCaseメソッドを使用するのが基本です。この記事では、それぞれのメソッドの使い方に加えて、==演算子で文字列を比較してはいけない理由についても詳しく解説します。 equals()メソッドで文字列を比較する 2つの文字列を比較し、大文字と小文字の違いまで厳密に判定したい場合はequals()メソッドを使用します。 次のコード例では、2つのStringインスタンスが大文字小文字を含むすべての文字において一致しているかどうかを判定しています。 public class Compare
-
JavaでList(リスト)を配列に変換する方法|toArray()とArrays.asList()の使い方
Javaの開発において、List(リスト)と配列(Array)の相互変換は非常によく使われる基本的な操作です。 Listを配列に変換する最も簡単かつ推奨される方法は、.toArray()メソッドを使うことです。逆に、配列をListに戻したい場合は、Arrays.asList()メソッドを使用します。 以下では、文字列(String)のListや整数(Integer)のListを、それぞれ対応する配列に変換する具体例を紹介します。 String型のListを配列に変換する import java.util.ArrayList; import java.util.List; public cl