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
なくを使用します。+