如何发出以逗号分隔的列表?

Ed *_*aub 2 java

这非常简单,但我看到了许多变种,我在其他地方看不到自己的做法.鉴于:

Iterable<String> strings;
Run Code Online (Sandbox Code Playgroud)

创建一个包含所有字符串的String,以逗号分隔.

Luk*_*der 7

Java-8版本

使用Java 8,幸运的是,最终有一种标准方法可以做到这一点:

String string = StreamSupport.stream(strings.spliterator(), false)
                             .collect(Collectors.joining(", "));
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有一种更简单的方法可以从a Iterable到a Stream(还)

Pre Java-8版本

使用

org.apache.commons.lang.StringUtils.join(Iterator iterator, String separator)
Run Code Online (Sandbox Code Playgroud)

http://commons.apache.org/lang/

如果你想自己做,我有时会这样做

StringBuilder sb = new StringBuilder();
String separator = "";
for (String string : iterable) {
  sb.append(separator);
  sb.append(string);
  separator = ", ";
}
Run Code Online (Sandbox Code Playgroud)


Sea*_*oyd 5

final StringBuilder sb = new StringBuilder();
final Iterator<String> it = iterable.iterator();
if(it.hasNext()){
  sb.append(it.next());
  while(it.hasNext()){
    sb.append(',').append(it.next());
  }
}
return sb.toString();
Run Code Online (Sandbox Code Playgroud)

但我当然更喜欢使用Guava的版本

String joined = Joiner.on(',').join(iterable);
Run Code Online (Sandbox Code Playgroud)

(公平地说:我之前曾问过一个非常相似的问题)