4

文字列のリストを取得しましたが、リストをカンマ(,)区切りで文字列に変換したいのですが、concatメソッドが唯一の方法であるか、簡単で良い方法があります

StringBuilder s = null;
List<String> listObjs (5 strings in it)
for(String listObj : listObjs)
s.append(listObj);
s.append(",");

編集:SO Rocksのみんな....数秒でたくさんの答え..うわー!!

4

7 に答える 7

12

できるよ

StringBuilder sb = new StringBuilder();
String sep = "";
for (String s : listObjs) {
    sb.append(sep).append(s);
    sep = ", ";
}
System.out.println(sb);
于 2012-08-21T11:08:45.650 に答える
5

Apache Commons の StringUtils.join メソッドを使用することもできます。

于 2012-08-21T11:11:05.700 に答える
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();
于 2012-08-21T11:10:26.897 に答える
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);
于 2012-08-21T11:14:39.880 に答える
0

concat()あなたの s 参照を変更しません(ちなみに、 fornullを期待する必要があります)。s を "" で初期化し、orを使用して追加する必要があります。または、この種のユースケースでははるかに効率的な StringBuilder を使用してください。NullPointerExceptions.concat()s = s.concat(other)s += other

StringBuilder sb = new StringBuilder();
for (String obj : objList) {
    if (sb.length() == 0) {
        sb.append(',');
    }
    sb.append(obj);
}
于 2012-08-21T11:11:41.410 に答える
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());
于 2012-08-21T11:05:38.070 に答える
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();
}
于 2012-08-21T11:12:29.017 に答える