Java: Drucken LinkedList ohne eckige Klammern?

7

Das ist eine ziemlich einfache Frage. Wenn Sie eine LinkedList wie folgt ausdrucken:

%Vor%

Es druckt es aus und umgibt die Liste in eckigen Klammern wie folgt:

%Vor%

Gibt es eine Möglichkeit, es ohne die eckigen Klammern auszudrucken?

    
Blackvein 21.10.2011, 19:03
quelle

8 Antworten

21

Ja - wiederhole die Liste und drucke sie aus (mit Komma nach jedem, aber dem letzten Element). Es gibt jedoch Hilfestellungen:

Guava :

%Vor%

commons-lang :

%Vor%

Und eine Anmerkung: Verlassen Sie sich nicht auf die .toString() Methode eines Objekts. Es ist nicht dazu gedacht, das Objekt für Benutzer anzuzeigen oder als vordefiniertes Format zu verwenden - es ist hauptsächlich für Debugging-Zwecke gedacht.

    
Bozho 21.10.2011, 19:08
quelle
5

Eine schnelle Antwort lautet:

%Vor%     
Sean Owen 21.10.2011 19:07
quelle
2

Sie könnten LinkedList ableiten und die Methode toString() überschreiben, aber das erscheint etwas übertrieben. Stattdessen iteriere über seine Elemente und konstruiere ein String entweder mit einem StringBuilder oder einem StringBuffer (falls Parallelität ein Problem ist).

Hinweis:
Ich schlage vor, Sie folgen nicht der Antwort von @Sean Owen , da das implementierungsabhängig und daher fragil ist.

    
mre 21.10.2011 19:08
quelle
0

Dies ist die Standardimplementierung von toString () in LinkedList. Sie können LinkedList erweitern, um eigene Implementierungen zu erstellen oder die Komposition zu verwenden, und nur die Schnittstelle java.util.List implementieren.

%Vor%     
tjg184 21.10.2011 19:07
quelle
0

Geändert von AbstractCollection.java :

%Vor%     
Chris Dennett 21.10.2011 19:10
quelle
0
%Vor%     
DwB 21.10.2011 19:11
quelle
0

Sie können die von der Methode .toString() zurückgegebene Zeichenfolge abrufen und das erste und letzte Zeichen entfernen oder Ihre eigene Listenklasse erstellen und die .toString() -Methode überschreiben, um die Liste zu durchlaufen und die Elemente ohne die Klammern auszudrucken. Oder Sie können es als anonyme Klasse wie:

tun %Vor%

Und natürlich bin ich zu langsam.

    
Brandon Buck 21.10.2011 19:12
quelle
0

Wenn Sie auf groovig achten, müssen Sie nichts importieren, tun Sie einfach:

%Vor%
  

Ding 1, Ding 2, Ding 3

Gleiches gilt für die Kartensammlung:

%Vor%
  

I = James Bond

     

Liebe = Rock N Roll

     

id = 007

    
Noam Manos 20.10.2013 21:09
quelle

Tags und Links