Javaでリストを文字列に変換する

Javaでリストを文字列に変換する

1. 前書き

この簡単な記事では、要素のListStringに変換する方法を見ていきます。 これは、検査/デバッグのために人間が読める形式でコンテンツをコンソールに印刷するような特定のシナリオで役立つ場合があります。

2. Listの標準toString()

最も簡単な方法の1つは、ListtoString()メソッドを呼び出すことです。

@Test
public void whenListToString_thenPrintDefault() {
    List intLIst = Arrays.asList(1, 2, 3);

    System.out.println(intLIst);
}

出力:

[1, 2, 3]

この手法は、List内の要素のタイプのtoString()メソッドを内部的に利用します。 この例では、toString()メソッドが適切に実装されているIntegerタイプを使用しています。

カスタムタイプ、たとえばPersonを使用している場合は、PersonクラスがtoString()メソッドをオーバーライドし、デフォルトの実装に依存しないことを確認する必要があります。 toString()メソッドが適切に実装されていない場合、予期しない結果が生じる可能性があります。

[[email protected],
  [email protected],
  [email protected]]

3. Collectorsを使用したカスタム実装

多くの場合、出力を別の形式で表示する必要があります。

前の例と比較して、コンマ(、)をハイフン(-)に置き換え、角括弧([、])を中括弧(\ {、})のセットに置き換えましょう。

@Test
public void whenCollectorsJoining_thenPrintCustom() {
    List intList = Arrays.asList(1, 2, 3);
    String result = intList.stream()
      .map(n -> String.valueOf(n))
      .collect(Collectors.joining("-", "{", "}"));

    System.out.println(result);
}

出力:

{1-2-3}

Collectors.joining()メソッドにはCharSequenceが必要なので、IntegerからStringmapする必要があります。 他のクラスの場合でも、そのクラスのコードにアクセスできない場合でも、同じ考え方を利用できます。

4. 外部ライブラリの使用

同様の結果を達成するためのApacheCommonsのStringUtilsクラスの使用法を見ていきます。

4.1. メーベン依存


    org.apache.commons
    commons-lang3
    3.6

依存関係の最新バージョンはhereにあります。

4.2. 実装

実装は文字通り単一のメソッド呼び出しです:

@Test
public void whenStringUtilsJoin_thenPrintCustom() {
    List intList = Arrays.asList(1, 2, 3);

    System.out.println(StringUtils.join(intList, "|"));
}

出力:

1|2|3

繰り返しますが、この実装は、検討しているタイプのtoString()実装に内部的に依存しています。

5. 結論

この記事では、さまざまな手法を使用してListStringに変換するのがいかに簡単であるかを見ました。

いつものように、この記事の完全なソースコードはover on GitHubにあります。