一致するものが1つ以上あるかどうかに応じて、開始文字と終了文字が異なる文字列を結合するための優れた方法は何ですか?
期待される出力
[1] foo=bar
[2] foo=(bar & baz & quz)
私の解決策よりも少しエレガントなものがあるかどうかを探しています
String s = Joiner.on(" & ").join(elements);
return elements.size() > 1 ? "(".concat(s).concat(")") : s;
いいえ、これ以上良い方法はありません。ジョイナーは(やや意図的に)単純な結合のみを行います。
これほどエレガントではありませんが、Guavaを避けてjava 8Streamsを使用したい人のために:
public class App {
public static void main(String args[]) {
List<String> stringList = new ArrayList<>(Arrays.asList("bar","baz","quz"));
List<String> stringListSingle = new ArrayList<>(Arrays.asList("bar"));
System.out.println(printStrings(stringList));
System.out.println(printStrings(stringListSingle));
}
private static String printStrings(List<String> stringList) {
return stringList.size() == 1 ? String.join(" & ", stringList) : stringList.stream()
.collect(Collectors.joining(", ","{", "}"));
}
}