Java8で追加されたAPI String編

【前提条件】

[環境]
[参考資料]

Java8 APIドキュメント
Java Platform SE 8

【概要】

今回はStringクラスに追加されたjoinメソッドについて調べてみました。

joinメソッドは文字列をデリミタをはさみ結合するメソッドです。

【使ってみる】

ということで早速サンプルコードで動きを見てみましょう。

[サンプルコード]
public class Sample {

    public static void main(final String[] args) {

        final List<String> test = new ArrayList<>();
        System.out.println(String.join(",", test));

        test.add("one");
        System.out.println(String.join(",", test));
        System.out.println(String.join(",", "one"));

        test.add("two");
        test.add("three");

        System.out.println(String.join(",", test));
        System.out.println(String.join(",", "one", "two", "three"));
    }
}

String#joinはstaticメソッドで、パラメータは2パターンあります。

1つ目はデリミタとIteratableを指定するパターンです。
Iteratableの中身はCharSequenceを継承したクラスです。
サンプルでは下記のコードが1つめのパターンです。

    System.out.println(String.join(",", test));

2つ目はデリミタとCharSequeceの可変長パラメータを指定するパターンです。
サンプルでは下記のコードになります。

    System.out.println(String.join(",", "one"));
    System.out.println(String.join(",", "one", "two", "three"));

サンプルでは上記の2パターンを下記のパターンで出力しています。

  • 1つも値が設定されていない場合(Listのみ)
  • 1つ値が設定されている場合
  • 複数値が設定されている場合
[実行結果]
one
one
one,two,three
one,two,three

値が設定されていない場合と1つ設定している場合は
デリミタが出力さていないことがわかります。

複数設定されている場合のみデリミタが出力されています。

【まとめ】

今まではfor文とStringBuilderを組み合わせて
実装していたものが一行でできるようになりました。

CSVで出力する場合にはかなり重宝するメソッドかなと思います。
他の言語では標準APIで提供されていることが多いと思いますが、
Java8からも提供されるようになったのがうれしいですね。