List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
Maintenant, je veux une sortie de cette liste comme 1,2,3,4 sans explicitement itérant dessus.
Sur Android, utilisez:
Android.text.TextUtils.join(",", ids);
Avec Java 8:
String csv = String.join(",", ids);
Avec Java 7-, il existe un moyen désordonné ( note: cela ne fonctionne que si vous n'insérez pas de chaînes contenant ", "
dans votre liste ) - évidemment, List#toString
effectuera une boucle pour créer idList
mais il n'apparaît pas dans votre code:
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);
ou vous pouvez utiliser StringUtils :
public static String join(Object[] array,
char separator)
public static String join(Iterable<?> iterator,
char separator)
Joint les éléments du tableau fourni/iterable en une seule chaîne contenant la liste d'éléments fournie.
Si vous voulez convertir la liste au format 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(", ", "','");
Le moyen le plus rapide est
StringUtils.join(ids, ",");
Le suivant:
String joinedString = ids.toString()
vous donnera une liste délimitée par des virgules. Voir docs pour plus de détails .
Vous devrez faire un peu de post-traitement pour supprimer les crochets, mais rien de trop délicat.
Un liner (Java pur)
list.toString().replace(", ", ",").replaceAll("[\\[.\\]]", "");
Join/concat & Split fonctionne sur ArrayList:
Pour Join/concat tous les éléments de la liste avec virgule (",") en String.
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);
To split tous les éléments de String en liste avec virgule (",").
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);
}
Fait
J'ai ArrayList of String, que je dois convertir en liste séparée par des virgules, sans espace. La méthode ArrayList toString () ajoute des crochets, des virgules et des espaces. J'ai essayé la méthode d'expression régulière en tant que sous.
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"
Veuillez commenter pour une meilleure logique plus efficace. (Le code est pour Android/Java)
Merci.
Solution Java 8 si ce n'est pas une collection de chaînes:
{Any collection}.stream()
.collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
.toString()
Si vous utilisez Collections Eclipse (anciennement GS Collections), vous pouvez utiliser la méthode 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(","));
Si vous pouvez convertir votre ArrayList
en FastList
, vous pouvez vous débarrasser de l'adaptateur.
Assert.assertEquals("1,2,3,4", FastList.newListWith(1, 2, 3, 4).makeString(","));
Remarque: Je suis un partisan des collections Eclipse.
Vous pouvez utiliser le code ci-dessous si l'objet comporte des attributs.
String getCommonSeperatedString(List<ActionObject> actionObjects) {
StringBuffer sb = new StringBuffer();
for (ActionObject actionObject : actionObjects){
sb.append(actionObject.Id).append(",");
}
sb.deleteCharAt(sb.lastIndexOf(","));
return sb.toString();
}
Voici le code donné ci-dessous pour convertir une liste en une chaîne séparée par des virgules sans itérer explicitement une liste, vous devez donc créer une liste et y ajouter un élément, puis la convertir en chaîne séparée par des virgules.
La sortie de ce code sera: Veeru, Nikhil, Ashish, Paritosh
au lieu de la sortie de la liste [Veeru, Nikhil, Ashish, Paritosh]
String List_name;
List<String> myNameList = new ArrayList<String>();
myNameList.add("Veeru");
myNameList.add("Nikhil");
myNameList.add("Ashish");
myNameList.add("Paritosh");
List_name = myNameList.toString().replace("[", "")
.replace("]", "").replace(", ", ",");