HOWTO · Java
Java で ArrayList を文字列に変換する方法
任意の区切り文字または角括弧で囲んだ表現を使って、Java で ArrayList を文字列に変換する方法を学びます。
このページの内容
ArrayList を String に変換するには、区切り文字で各要素の値を 1 つずつ並べる必要があるか、表示用に角括弧で囲んだ表現が必要かを選びます。区切り文字で結合したテキストには String.join() が直接使える選択肢です。ループをカスタマイズする必要がある場合は StringBuilder が便利です。以下の例では、リストの値として Apple、Orange、Mango を使用します。
Java で + 演算子を使用して ArrayList を String に変換する
+ 演算子は文字列を連結します。短くて固定されたリストであれば、その値を直接連結し、間に区切り文字を配置できます。ループ内で連結を繰り返すと中間文字列が生成されるため、大きなリストには StringBuilder を使用してください。
import java.util.ArrayList;
import java.util.List;
public class SimpleTesting {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Orange");
fruits.add("Mango");
String joined = fruits.get(0) + "," + fruits.get(1) + "," + fruits.get(2);
System.out.println(joined);
}
}
Java で append() メソッドを使用して ArrayList を String に変換する
StringBuilder.append() を使用して、ループ内で結果を構築します。最初の値を除く各値の前に区切り文字を追加します。これにより、末尾に余分な区切り文字が残るのを防げます。toString() を呼び出すと、完成した String が返されます。
import java.util.ArrayList;
import java.util.List;
public class SimpleTesting {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Orange");
fruits.add("Mango");
StringBuilder result = new StringBuilder();
for (String fruit : fruits) {
if (result.length() > 0) {
result.append(", ");
}
result.append(fruit);
}
String joined = result.toString();
System.out.println(joined);
}
}
Java で join() メソッドを使用して ArrayList を String に変換する
String.join() は、指定した区切り文字を使って要素を結合します。区切り文字は隣り合う値の間に現れ、最初の値の前や最後の値の後には追加されません。ここでは、この API について Java の最小バージョンを指定せずに説明します。
import java.util.ArrayList;
import java.util.List;
public class SimpleTesting {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Orange");
fruits.add("Mango");
String joined = String.join(", ", fruits);
System.out.println(joined);
}
}
Java で StringUtils クラスを使用して ArrayList を String に変換する
プロジェクトで既に Apache Commons Lang を使用している場合、StringUtils.join(fruits, ", ") が指定した区切り文字で値を結合します。この選択肢には、プロジェクトのクラスパスに Commons Lang への依存関係が必要です。これは Java 標準ライブラリの一部ではありません。ライブラリの詳細については、StringUtils クラスのガイドを参照してください。
Java で replaceAll() メソッドを使用して ArrayList を String に変換する
replaceAll() を使うと List.toString() から括弧と区切り文字の間隔を取り除くことができますが、これは書式設定の近道です。リストの表示表現に依存するため、カンマや括弧を含む値があると結果が曖昧になる場合があります。この例では角括弧のみを取り除き、List.toString() のカンマとスペースの区切り文字は変更しません。
import java.util.ArrayList;
import java.util.List;
public class SimpleTesting {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Orange");
fruits.add("Mango");
String joined = fruits.toString().replaceAll("\\[|\\]", "");
System.out.println(joined);
}
}
Java で joining() メソッドを使用して ArrayList を String に変換する
ストリームベースのアプローチでは、リストに対して stream() を呼び出し、Collectors.joining() でその要素を収集します。区切り文字は値の間に挿入されます。この API については、Java の最小バージョンに関する主張は行いません。
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class SimpleTesting {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Orange");
fruits.add("Mango");
String joined = fruits.stream().collect(Collectors.joining(", "));
System.out.println(joined);
}
}
Java で deepToString() メソッドを使用して ArrayList を String に変換する
Arrays.deepToString() は、角括弧で囲んだ配列形式の表現を作成します。これは表示や入れ子になった配列の値に便利です。単純な区切り文字で結合された文字列は作成しません。メソッドに渡す前に、リストを配列に変換してください。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SimpleTesting {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Orange");
fruits.add("Mango");
String representation = Arrays.deepToString(fruits.toArray());
System.out.println(representation);
}
}