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);
  }
}