在Apache Common Lang
或Spring Utils
中是否存在以下内容?或者您是否为此编写了自己的Util方法?
List<String> list = new ArrayList<String>();
list.add("moo");
list.add("foo");
list.add("bar");
String enumeratedList = Util.enumerate(list, ", ");
assert enumeratedList == "moo, foo, bar";
我记得在php中使用implode
,这就是我搜索java的内容。
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
答案 0 :(得分:11)
您可以通过以下方式使用StringUtils.join(Object[] array, String delimiter)
(来自commons-lang):
String enumeratedList = StringUtils.join(list.toArray(), ", ");
答案 1 :(得分:4)
Google Collections提供Joiner类,可以像这样使用:
public class Main {
public static void main(String[] args) {
List<String> list = Lists.newLinkedList();
list.add("1");
list.add("2");
list.add("3");
System.out.println(Joiner.on(", ").join(list));
}
}
答案 2 :(得分:3)
如果你不想依赖于commons-lang,那么实现这一点非常简单。将List转换为Array只是为了将它再次连接到String中也不是很好。而只是迭代你的集合。甚至比使用Collection更好的是使用Iterable处理任何可以迭代的东西(甚至某种流或未知长度的集合)。
import java.util.Arrays;
import java.util.Iterator;
public class JoinDemo {
public static String join(String sep, Iterable<String> i) {
StringBuilder sb = new StringBuilder();
for (Iterator<String> it = i.iterator(); it.hasNext();) {
sb.append(it.next());
if (it.hasNext())
sb.append(sep);
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(join(",", Arrays.asList(args)));
}
}
示例:
# javac JoinDemo.java
# java JoinDemo a b c
a,b,c