使用 Java 8+
Java 8 具有 Collectors.joining()
及其重载。它还具有String.join
。
使用 a 和 aStream
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();
}
备注:
- 所有解决方案都假定这是 一个 而不是 一个 .您可以将 a 转换为 using .您可以直接从 using .
strings
List<String>
String[]
String[]
List<String>
Arrays.asList(strings)
Stream<String>
String[]
Arrays.stream(strings)
- Java 8+ 代码段使用串联,因为此时的性能通常比 .
+
+
StringBuilder
- 旧版本的代码段使用,而不是因为在旧版本上通常更快。
StringBuilder
+