我有一个字符串列表,现在我想将列表带入逗号(,)分隔的字符串 是concat方法的唯一方法还是有一些简单易行的方法
StringBuilder s = null;
List<String> listObjs (5 strings in it)
for(String listObj : listObjs)
s.append(listObj);
s.append(",");
编辑:太棒了......在几秒钟内回答了一些答案......哇!!
答案 0 :(得分:12)
你可以做到
StringBuilder sb = new StringBuilder();
String sep = "";
for (String s : listObjs) {
sb.append(sep).append(s);
sep = ", ";
}
System.out.println(sb);
答案 1 :(得分:5)
答案 2 :(得分:0)
使用StringBuilder
。
StringBuilder sb = new StringBuilder();
for (String obj : listObjs) {
sb.append(String.format("%s,", obj));
//or without format
//sb.append(obj).append(",");
}
sb.deleteCharAt(sb.length()-1); // The last ","
System.out.println(sb.toString());
答案 3 :(得分:0)
确实使用StringBuilder
:
StringBuilder sb = new StringBuilder();
for (String string : listObjs) {
sb.append(string);
sb.append(", ");
}
// Remove the dangling ", "
int length = sb.length();
sb.delete(length - 2, length);
String combined = sb.toString();
答案 4 :(得分:0)
concat()
不会修改你的引用(顺便提一下null
,所以你应该期望NullPointerException
为s.concat()
。您应该使用“”初始化s,然后使用s = s.concat(other)
或s += other
附加到它。或者更好的是,使用StringBuilder,它对这种用例来说效率更高:
StringBuilder sb = new StringBuilder();
for (String obj : objList) {
if (sb.length() == 0) {
sb.append(',');
}
sb.append(obj);
}
答案 5 :(得分:0)
使用concat
不是一个好主意,因为它会在每个循环中创建一个新的String。您可以使用StringBuilder,从内存角度来看效率更高。
public static String getCsvFrom(java.util.Collection<?> objects) {
if (objects == null || objects.isEmpty()) {
return "";
}
StringBuilder s = new StringBuilder();
boolean firstLoop = true;
for (Object o : objects) {
if (!firstLoop) {
s.append(",");
} else {
firstLoop = false;
}
s.append(o);
}
return s.toString();
}
答案 6 :(得分:0)
我想知道你为什么没试过这个:
String str = "";
str += listObjs.get(0);
for (int i = 1; i < listObjs.size() - 1; i++ ) {
str += "," + listObjs.get(i);
}
str += listObjs.get(listObjs.size() - 1);