[前回:[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を使ってももちろん同じことはできますが、
新しいものや便利なものは、取り入れていきたいなと個人的には思っています。