1前書き

このクイック記事では、要素の

List



String

に変換する方法について説明します。これは、検査やデバッグのためにコンテンツを人間が読める形式でコンソールに出力するなどの特定のシナリオでは有用な場合があります。


2

List


の標準

toString()

最も簡単な方法の1つは、単に

List



toString()

メソッドを呼び出すことです。

@Test
public void whenListToString__thenPrintDefault() {
    List<Integer> 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<Integer> 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



String

にマップする必要があります。他のクラスの場合でも、そのクラスのコードにアクセスできない場合でも、同じ考え方を利用できます。


4外部ライブラリを使用する

これで、Apache Commonsの

StringUtils

クラスを使用して同様の結果を得ることができます。


4.1. Mavenの依存関係

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.6</version>
</dependency>

依存関係の最新バージョンはhttps://search.maven.org/classic/#search%7C1%7Cg%3A%22org.apache.commons%22%20AND%20a%3A%22commons-lang3% 22[ここ]


4.2. 実装

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

@Test
public void whenStringUtilsJoin__thenPrintCustom() {
    List<Integer> intList = Arrays.asList(1, 2, 3);

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

出力:

1|2|3

繰り返しますが、この実装は内部的には考慮している型の

toString()

実装に依存しています。


5結論

この記事では、さまざまな手法を使用して

List



String

に変換することがいかに簡単かを説明しました。

いつものように、この記事の完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/java-collections-conversions[GitHubに載っています]。