web-dev-qa-db-ja.com

リストをjavaでカンマ区切りの文字列に変換する最良の方法

私はSet<String> result&をカンマ区切りの文字列に変換したいのですが。私のアプローチは以下のようになりますが、他の意見も求めています。

List<String> slist = new ArrayList<String> (result);
StringBuilder rString = new StringBuilder();

Separator sep = new Separator(", ");
//String sep = ", ";
for (String each : slist) {
    rString.append(sep).append(each);
}

return rString;
137
Mad-D

Apache Commonsライブラリから:

import org.Apache.commons.lang3.StringUtils

つかいます:

StringUtils.join(slist, ',');

別のよくある質問と回答 はこちら

378
BobTheBuilder

最初に文字列の全長を数え、それをStringBuilderコンストラクタに渡すことができます。そして最初にSetを変換する必要はありません。

Set<String> abc = new HashSet<String>();
abc.add("A");
abc.add("B");
abc.add("C");

String separator = ", ";
int total = abc.size() * separator.length();
for (String s : abc) {
    total += s.length();
}

StringBuilder sb = new StringBuilder(total);
for (String s : abc) {
    sb.append(separator).append(s);
}

String result = sb.substring(separator.length()); // remove leading separator
9
kay

使用しているSeparatorはUIコンポーネントです。単純なString sep = ", "を使うほうがいいでしょう。

3
Dan D.