LoginSignup
41
39

More than 5 years have passed since last update.

[java8] 8回目:文字列結合に新しい仲間が追加

Posted at

[前回:[java8] 7回目:インタフェースのデフォルト実装 ~菱形継承~]
http://qiita.com/yuusuke_s/items/b7a310a5bad7905581f5

お久しぶりです。
そろそろJava8の記事から離れようと思ったのですが、、、
文字列結合周りで便利そうなクラスた加わっていたので、簡単にご紹介。

SDKの標準にこういうクラスが追加されていくのは、地味に便利だなぁと感じています。

java.util.StringJoinerによる結合

単純な結合

引数なしのコンストラクタがあっても良いのでは?と思ったり。

public class StringJoinSample {

    public static void main(String[] args) {
        StringJoiner sample1 = new StringJoiner("");
        sample1.add("aaaa").add("bbbb").add("cccc");
        System.out.println(sample1);
    }
}

結果

aaaabbbbcccc

区切り文字を含む結合

public class StringJoinSample {

    public static void main(String[] args) {
        StringJoiner sample1 = new StringJoiner("|");
        sample1.add("aaaa").add("bbbb").add("cccc");
        System.out.println(sample1);
    }
}

結果

aaaa|bbbb|cccc

区切り文字+Prefix、Suffixを含む結合

public class StringJoinSample {

    public static void main(String[] args) {
        StringJoiner sample1 = new StringJoiner("|", "【", "】");
        sample1.add("aaaa").add("bbbb").add("cccc");
        System.out.println(sample1);
    }
}

結果

【aaaa|bbbb|cccc】

java.util.stream.Collectors#joiningによる結合

上記の3パターンをまとめて紹介しています。
streamのcollectメソッドの引数に、Collectorsインタフェースの実装を渡すようですね。

public class StringJoinSample {

    public static void main(String[] args) {
        List<String> list = Arrays.asList("aaaa", "bbbb", "cccc");

        // 単純な結合
        System.out.println(list.stream().collect(Collectors.joining()));


        // 区切り文字を含む結合
        System.out.println(list.stream().collect(Collectors.joining("|")));


        // 区切り文字+Prefix、Suffixを含む結合
        System.out.println(list.stream().collect(Collectors.joining("|", "【", "】")));
    }
}

結果

aaaabbbbcccc
aaaa|bbbb|cccc
【aaaa|bbbb|cccc】

最後に

通常のStringやStringBuilderを使ってももちろん同じことはできますが、
新しいものや便利なものは、取り入れていきたいなと個人的には思っています。

41
39
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
39