创建集合的正确字符串表示形式

Jan*_*Jan 4 java arrays string stringbuilder tostring

我经常遇到创建对象集合的String表示的任务.

例:

String[] collection = {"foo", "bar", "lorem", "dolar"};
Run Code Online (Sandbox Code Playgroud)

我要创建的表示:"foo,bar,lorem,dolar".

每当我遇到这个任务时,我都想知道哪种方法能够达到理想的效果.

我知道有很多方法可以获得所需的表示,但是例如我总是想知道,如果有可能通过使用for/each循环来创建字符串?

像这样:

StringBuilder builder = new StringBuilder();

for (String tag : list) {
  builder.append(tag + ", ");

String representation = builder.toString();
// but now the String look like this: "foo, bar, lorem, dolar, " which nobody wants
Run Code Online (Sandbox Code Playgroud)

或者最好直接使用迭代器(如果有的话)?

假设list是一个集合(这就是它们在JDK中的表现方式):

Iterator<String> it = list.iterator();
while (it.hasNext()) {
  sb.append(it.next());
  if (!it.hasNext()) {
    break;
  }
  sb.append(", ");
}
Run Code Online (Sandbox Code Playgroud)

当然,人们可以使用传统的for循环索引数组或执行许多其他操作.

将字符串列表转换为用逗号分隔每个元素的表示的最简单/最佳可读/最安全的方法是什么,并在开头或结尾处理边缘情况(意味着在第一个元素之前或之后没有逗号最后一个元素)?

Ami*_*ila 6

使用Java 8,您可以:

String listJoined = String.join(",", list);
Run Code Online (Sandbox Code Playgroud)