@Princeyesuraj, la réponse officielle est fournie par adarshr . Si vous voulez votre propre séparateur, vous pouvez essayer la réponse de JoeSlav , et si aucun problème de thread, vous pouvez utiliser StringBuilder au lieu de StringBuffer pour plus d'efficacité. La réponse de krock est bonne, mais un peu exagérée à mon avis.
Dante May Code
Réponses:
470
Si vous voulez juste un vidage "de style débogage" d'un tableau:
String str =Arrays.toString(arr);
ou, pour plus de contrôle (avant Java 8):
StringBuilder builder =newStringBuilder();for(String s : arr){
builder.append(s);}String str = builder.toString();
(Java 8 et supérieur):
String str =String.join(",", arr);
Et si vous venez sous l'angle Android:
String str =TextUtils.join(",", arr);
Vous pouvez modifier ce qui précède en fonction des caractères, le cas échéant, que vous souhaitez entre les chaînes.
Vous pouvez voir un code presque identique au code pré-Java 8, mais l'utilisation de StringBuffer- StringBuilderest une classe plus récente qui n'est pas adaptée aux threads, mais a donc de meilleures performances dans un seul thread car elle supprime la synchronisation inutile. En bref, il vaut mieux utiliser StringBuilderdans 99% des cas - en termes de fonctionnalité, les deux sont identiques.
N'UTILISEZ PAS de chaîne et ajoutez-la simplement avec + = comme certaines des réponses ici. Cela envoie le GC à travers le toit parce que vous créez et jetez autant d'objets chaîne que vous avez d'éléments dans votre tableau. Pour les petits tableaux, vous ne remarquerez peut-être pas vraiment la différence, mais pour les grands, il peut être plus lent de plusieurs ordres de grandeur.
Utilisez Apache commons StringUtils.join(). Il prend un tableau en tant que paramètre (et a également des surcharges pour Iterableet des Iteratorparamètres) et appelle toString()chaque élément (s'il n'est pas nul) pour obtenir la représentation sous forme de chaîne de chaque élément. Chaque représentation de chaîne d'éléments est ensuite jointe en une chaîne avec un séparateur entre les deux si l'un est spécifié:
Renvoie une représentation sous forme de chaîne du "contenu profond" du tableau spécifié. Si le tableau contient d'autres tableaux en tant qu'éléments, la représentation sous forme de chaîne contient leur contenu, etc. Cette méthode est conçue pour convertir des tableaux multidimensionnels en chaînes
Si vous n'avez pas besoin de beaucoup de contrôle, je pense que c'est la solution la plus simple car vous n'avez pas besoin d'une bibliothèque tierce. Voici un exemple: System.out.println (Arrays.deepToString (args));
Dites-nous ensuite le format que vous recherchez. Sinon, nous ne pouvons pas deviner ce que vous avez en tête.
Jason S
3
Voici un exemple de conversion de tableau en chaîne.
public class ArrayToString
{
public static void main (String [] args)
{
String [] strArray = new String [] {"Java", "PHP", ".NET", "PERL", "C", "COBOL"};
Vous voulez du code qui produit une chaîne à partir de arrayList,
Iterate through all elements in list and add it to your String result
vous pouvez le faire de 2 manières: en utilisant String comme résultat ou StringBuffer / StringBuilder.
Exemple:
String result ="";for(String s : list){
result += s;}
... mais ce n'est pas une bonne pratique pour des raisons de performances. Mieux vaut utiliser StringBuffer (threads safe) ou StringBuilder qui sont plus appropriés pour ajouter des chaînes
Votre réponse est fondamentalement la même que smas; juste un peu plus compliqué; donc certainement pas "le plus facile". Et en plus, Arrays.toString () est encore plus facile.
GhostCat
-22
Si vous savez combien d'éléments le tableau possède, une méthode simple est la suivante:
array.toString()
? Sois plus précis.Réponses:
Si vous voulez juste un vidage "de style débogage" d'un tableau:
ou, pour plus de contrôle (avant Java 8):
(Java 8 et supérieur):
Et si vous venez sous l'angle Android:
Vous pouvez modifier ce qui précède en fonction des caractères, le cas échéant, que vous souhaitez entre les chaînes.
Vous pouvez voir un code presque identique au code pré-Java 8, mais l'utilisation de
StringBuffer
-StringBuilder
est une classe plus récente qui n'est pas adaptée aux threads, mais a donc de meilleures performances dans un seul thread car elle supprime la synchronisation inutile. En bref, il vaut mieux utiliserStringBuilder
dans 99% des cas - en termes de fonctionnalité, les deux sont identiques.N'UTILISEZ PAS de chaîne et ajoutez-la simplement avec + = comme certaines des réponses ici. Cela envoie le GC à travers le toit parce que vous créez et jetez autant d'objets chaîne que vous avez d'éléments dans votre tableau. Pour les petits tableaux, vous ne remarquerez peut-être pas vraiment la différence, mais pour les grands, il peut être plus lent de plusieurs ordres de grandeur.
la source
Arrays.toString(yourArray);
mais je suppose que vous avez utiliséyourArray.toString();
1.8
vous pouvez également utiliserString::join
, au lieu de la boucle for.String.join("", arr);
Utilisez Apache commons
StringUtils.join()
. Il prend un tableau en tant que paramètre (et a également des surcharges pourIterable
et desIterator
paramètres) et appelletoString()
chaque élément (s'il n'est pas nul) pour obtenir la représentation sous forme de chaîne de chaque élément. Chaque représentation de chaîne d'éléments est ensuite jointe en une chaîne avec un séparateur entre les deux si l'un est spécifié:Produit:
la source
J'aime utiliser Google Joiner Guava pour cela, par exemple:
produirait la même chaîne que:
ETA: Java 8 dispose désormais d'un support similaire:
Je ne vois pas la prise en charge du saut de valeurs nulles, mais cela est facile à contourner.
la source
null
serait "celui dont le nom ne doit pas être mentionné" :-)Joiner.on(", ").useForNull("Voldemort").join("Harry", null, "Ron", "Hermione");
String.join(", ", "Harry", null, "Ron", "Hermione").replaceAll("null", "Voldermart");
Vous pouvez le faire, étant donné un tableau
a
de type primitif:la source
Depuis Java 8, la manière la plus simple, je pense, est:
De cette façon, vous pouvez choisir un délimiteur arbitraire.
la source
Essayez la méthode Arrays.deepToString .
Renvoie une représentation sous forme de chaîne du "contenu profond" du tableau spécifié. Si le tableau contient d'autres tableaux en tant qu'éléments, la représentation sous forme de chaîne contient leur contenu, etc. Cette méthode est conçue pour convertir des tableaux multidimensionnels en chaînes
la source
Essayez les méthodes Arrays.toString surchargées.
Sinon, essayez cette implémentation générique ci-dessous:
la source
Voici un exemple de conversion de tableau en chaîne.
la source
Si vous n'avez pas le choix mais d'utiliser Java 6 ou 7, vous devez utiliser la jointure Divide & Conquer.
la source
Vous voulez du code qui produit une chaîne à partir de arrayList,
vous pouvez le faire de 2 manières: en utilisant String comme résultat ou StringBuffer / StringBuilder.
Exemple:
... mais ce n'est pas une bonne pratique pour des raisons de performances. Mieux vaut utiliser StringBuffer (threads safe) ou StringBuilder qui sont plus appropriés pour ajouter des chaînes
la source
Utilisez la méthode join de la bibliothèque StringUtils d' Apache Commons .
la source
la source
Si vous savez combien d'éléments le tableau possède, une méthode simple est la suivante:
la source