List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
ここで、明示的に反復せずに、このリストからの出力を 1,2,3,4 として取得したいと考えています。
Android の場合:
android.text.TextUtils.join(",", ids);
Java 8 の場合:
String csv = String.join(",", ids);
Java 7-には、汚い方法があります(注:リストに含まれる文字列を挿入しない場合にのみ機能", "
します)-明らかに、List#toString
ループを実行して作成しますidList
が、コードには表示されません:
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
String idList = ids.toString();
String csv = idList.substring(1, idList.length() - 1).replace(", ", ",");
import com.google.common.base.Joiner;
Joiner.on(",").join(ids);
またはStringUtilsを使用できます。
public static String join(Object[] array,
char separator)
public static String join(Iterable<?> iterator,
char separator)
指定された配列/イテラブルの要素を、指定された要素のリストを含む単一の文字列に結合します。
リストをCSV形式に変換したい場合…………
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
// CSV format
String csv = ids.toString().replace("[", "").replace("]", "")
.replace(", ", ",");
// CSV format surrounded by single quote
// Useful for SQL IN QUERY
String csvWithQuote = ids.toString().replace("[", "'").replace("]", "'")
.replace(", ", "','");
一番早い方法は
StringUtils.join(ids, ",");
以下:
String joinedString = ids.toString()
コンマ区切りのリストが表示されます。詳細については、ドキュメントを参照してください。
角かっこを削除するには、後処理を行う必要がありますが、特に難しいことはありません。
ワンライナー (ピュア Java )
list.toString().replace(", ", ",").replaceAll("[\\[.\\]]", "");
ArrayListのJoin / concat & Split関数:
arraylistのすべての要素をカンマ(" , ")で結合 /concatして文字列にします。
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
String allIds = TextUtils.join(",", ids);
Log.i("Result", allIds);
String のすべての要素をコンマ(" , ")で arraylist に分割します。
String allIds = "1,2,3,4";
String[] allIdsArray = TextUtils.split(allIds, ",");
ArrayList<String> idsList = new ArrayList<String>(Arrays.asList(allIdsArray));
for(String element : idsList){
Log.i("Result", element);
}
終わり
文字列の ArrayList を持っています。これをスペースなしでコンマ区切りのリストに変換する必要があります。ArrayList toString() メソッドは、角かっこ、コンマ、およびスペースを追加します。以下のように正規表現の方法を試しました。
List<String> myProductList = new ArrayList<String>();
myProductList.add("sanjay");
myProductList.add("sameer");
myProductList.add("anand");
Log.d("TEST1", myProductList.toString()); // "[sanjay, sameer, anand]"
String patternString = myProductList.toString().replaceAll("[\\s\\[\\]]", "");
Log.d("TEST", patternString); // "sanjay,sameer,anand"
より効率的なロジックについてコメントしてください。( コードは Android / Java 用です )
ありがとう。
Eclipse コレクション(以前の GS コレクション) を使用している場合は、このメソッドを使用できますmakeString()
。
List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
Assert.assertEquals("1,2,3,4", ListAdapter.adapt(ids).makeString(","));
に変換できる場合ArrayList
はFastList
、アダプターを取り除くことができます。
Assert.assertEquals("1,2,3,4", FastList.newListWith(1, 2, 3, 4).makeString(","));
注:私は Eclipse コレクションのコミッターです。