Java 8+
Java 8 にはCollectors.joining()とそのオーバーロードがあります。も持っていString.joinます。
aStreamと a の使用Collector
素朴だが効果的な方法
String wrapWithQuotesAndJoin(List<String> strings) {
return strings.stream()
.map(s -> "\"" + s + "\"")
.collect(Collectors.joining(", "));
}
最短でおそらくパフォーマンスが向上します(ややハックですが)
String wrapWithQuotesAndJoin(List<String> strings) {
return strings.stream()
.collect(Collectors.joining("\", \"", "\"", "\""));
}
使用するString.join
非常にハック。使用しないでください。(ただし、言及する必要があります)
String wrapWithQuotesAndJoin(List<String> strings) {
return strings.isEmpty() ? "" : "\"" + String.join("\", \"", strings) + "\""
}
古いバージョンの Java の場合
自分で好きなことをして、ライブラリを使用してください。グァバがすぐに思い浮かびます。
グアバの使用
private static final Function<String,String> addQuotes = new Function<String,String>() {
@Override public String apply(String s) {
return new StringBuilder(s.length()+2).append('"').append(s).append('"').toString();
}
};
String wrapWithQuotesAndJoin(List<String> strings) {
return Joiner.on(", ").join(Iterables.transform(listOfStrings, addQuotes));
}
ライブラリがありません
String wrapWithQuotesAndJoin(List<String> strings) {
if (listOfStrings.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder();
Iterator<String> it = listOfStrings.iterator();
sb.append('"').append(it.next()).append('"'); // Not empty
while (it.hasNext()) {
sb.append(", \"").append(it.next()).append('"');
}
result = sb.toString();
}
注:
stringsすべてのソリューションは、それがList<String>ではなく であると想定していString[]ます。を使用String[]してを に変換できます。を使用してから直接取得できます。List<String>Arrays.asList(strings)Stream<String>String[]Arrays.stream(strings)
- Java 8+ スニペットは
+連結を使用します。これは、この時点+では、通常はStringBuilder.
- 通常、古いバージョンの方が高速であるため、古いバージョンのスニペットでは
StringBuilderなくを使用します。+