在java中将列表转换为逗号分隔字符串的最佳方法

Mad*_*d-D 144 java string collections list set

我有Set<String> result&想要将其转换为逗号分隔的字符串.我的方法如下所示,但也在寻找其他意见.

List<String> slist = new ArrayList<String> (result);
StringBuilder rString = new StringBuilder();

Separator sep = new Separator(", ");
//String sep = ", ";
for (String each : slist) {
    rString.append(sep).append(each);
}

return rString;
Run Code Online (Sandbox Code Playgroud)

Bob*_*der 388

来自Apache Commons库:

import org.apache.commons.lang3.StringUtils
Run Code Online (Sandbox Code Playgroud)

使用:

StringUtils.join(slist, ',');
Run Code Online (Sandbox Code Playgroud)

这里有另一个类似的问答

  • 在Android上,您可以使用TextUtils.join(). (58认同)
  • 来自Apache Commons Lang的StringUtils(http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#join(java.util.Iterator,char)) (20认同)
  • @PassionateDeveloper单引号用于Java中的`char`s (10认同)
  • @HemantG对于Android用户:`TextUtils.join()`期望参数的顺序与`StringUtils`不同.它是`TextUtils.join(delimiter,iterable)`.例如,上面的代码是`TextUtils.join(',',slist);`[Source](https://developer.android.com/reference/android/text/TextUtils.html) (10认同)
  • 如果您使用的是 Java 8 并且不想使用流 api,那么您可以简单地执行 `String.join(",", slist);` (3认同)
  • Java不支持单引号 (2认同)

kay*_*kay 9

您可以先计算字符串的总长度,然后将其传递给StringBuilder构造函数.而且您不需要先转换Set.

Set<String> abc = new HashSet<String>();
abc.add("A");
abc.add("B");
abc.add("C");

String separator = ", ";
int total = abc.size() * separator.length();
for (String s : abc) {
    total += s.length();
}

StringBuilder sb = new StringBuilder(total);
for (String s : abc) {
    sb.append(separator).append(s);
}

String result = sb.substring(separator.length()); // remove leading separator
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果Set为空,StringBuilder.substring将抛出异常. (2认同)

归档时间:

查看次数:

300273 次

最近记录:

9 年,4 月 前