连接String对象列表的最佳方法是什么? [重复]

问题

这个问题在这里已有答案:

  • Java:将List <String>转换为String 22答案

连接String对象列表的最佳方法是什么?我想这样做:

List<String> sList = new ArrayList<String>();

// add elements

if (sList != null)
{
    String listString = sList.toString();
    listString = listString.subString(1, listString.length() - 1);
}

我不知何故发现这比使用StringBuilder / StringBuffer方法更整洁。

有什么想法/评论吗?


#1 热门回答(279 赞)

使用Apache Commons Lang中的StringUtils.join方法之一。

import org.apache.commons.lang3.StringUtils;

String result = StringUtils.join(list, ", ");

如果你有幸使用Java 8,那么它就更容易了......只需使用884139536

String result = String.join(", ", list);

#2 热门回答(100 赞)

使用Java 8

String str = list.stream().collect(Collectors.joining())

甚至

String str = String.join("", list);

#3 热门回答(44 赞)

你的方法依赖于Java的ArrayList#toString()实现。

虽然Java API中记录了实现并且不太可能发生变化,但它有可能实现。自己实现它更可靠(循环,StringBuilders,递归任何你更喜欢的)。

当然,这种方法看似"整洁"或更"太甜"或"金钱",但在我看来,这是一种更糟糕的方法。