7
votes

Java: Imprimer la liste liée sans crochets carrés?

C'est une question assez simple. Lorsque vous imprimez une liste liée, comme: xxx pré>

Il l'imprime, entourant la liste des crochets comme ceci: p>

[thing 1, thing 2, thing 3]


0 commentaires

8 Réponses :


5
votes

Une réponse rapide et sale est la suivante:

String s = list.toString();
System.out.println(s.substring(1, s.length()-1));


1 commentaires

Puisque vous avez inclus le "rapide et sale" de non-responsabilité, je ne vais pas descendre votre réponse. Cela dit, c'est exactement le type de choses que nous devrions être décourageant d'autres développeurs de faire.



0
votes

Il s'agit de la mise en œuvre par défaut de la totring () sur LinkedList. Vous pouvez étendre la liste liée à fournir votre propre implémentation ou utiliser la composition et simplement implémenter l'interface Java.Util.List.List. xxx


0 commentaires

2
votes

Vous pouvez sous-classe linkedlist et remplacer son Tostring () méthode, mais cela semble un peu excessif. Au lieu de cela, itérer sur ses éléments et construisez une chaîne avec un stringbuilder ou un fichier stringbuffer (si la concurrence est un problème).

Note:
Je vous suggère de ne pas suivre la réponse fournie par @san Owen , car c'est dépendant de la mise en œuvre et donc fragile.


0 commentaires

22
votes

2 commentaires

Celui-ci a besoin de +2 pour les utilitaires et le Tostring () bit.


Quelle est l'importation pour Stringutils?



0
votes

modifié à partir de abstractcollection.java : xxx


0 commentaires

0
votes
StrBuilder builder = new StrBuilder(); // apache commons lang.
for (Object object : yourList)
{
  builder.appendSeperator(", ");
  builder.append(object.toString());
}

System.out.println(builder.toString());

0 commentaires

0
votes

Vous pouvez saisir la chaîne renvoyée par la méthode .tostring () et supprimez le premier et le dernier caractère, ou faites votre propre classe de liste et remplacez le .tostring () Méthode pour itérer dans la liste et imprimer les éléments sans supports. Ou vous pouvez le faire comme une classe anonyme comme: xxx

et bien sûr je suis trop lent.


0 commentaires

0
votes

Si vous êtes dans groovy fort>, il n'est pas nécessaire d'importer quoi que ce soit, il suffit de faire: xxx pré> blockQuote>

chose 1, chose 2, chose 3 em> p> BlockQuote>

Même chose avec la collection de cartes: P>

map = [I:"James Bond", love:"rock N roll", id:"007"]
println map.collect { k,v -> "$k = $v" }.join('\n')


0 commentaires