So entfernen Sie die Klammern [ ] von ArrayList#toString()?
Habe ich erstellt ein Array-Liste in Java sieht das etwa so aus:
public static ArrayList<Integer> error = new ArrayList<>();
for (int x= 1; x<10; x++)
{
errors.add(x);
}
Beim drucken Fehler, die ich bekommen es-Fehler, wie
[1,2,3,4,5,6,7,8,9]
Möchte ich nun entfernen Sie die Klammern([ ]) von diesem array-Liste. Ich dachte, ich könnte mit der Methode errors.entfernen("["), aber dann entdeckte ich, dass es nur boolean und zeigt true oder false. Könnte jemand empfehlen, wie kann ich das erreichen?
Vielen Dank im Voraus für Eure Hilfe.
- Selbe wie: stackoverflow.com/questions/4389480/...
- Die boolean zurückgegeben Liste.entfernen() tatsächlich zeigt an, wenn der Wert gefunden wurde in der Liste steht oder nicht. Finden Sie in der JavaDoc (docs.oracle.com/javase/7/docs/api/java/util/...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich Berufung System.aus.println zum drucken der Liste. Die JavaDoc sagt:
Den Klammern Hinzugefügt werden, die von der
toString
Umsetzung der ArrayList. Um Sie zu entfernen, müssen Sie zuerst den String:und dann Streifen Sie die Klammern, so etwas wie dieses:
Ist es keine gute Vorgehensweise ist abhängig von
toString()
Umsetzung.toString()
bestimmt ist, nur zu generieren, die eine lesbare Darstellung für die Protokollierung oder debugging-Zwecke. So ist es besser, erstellen Sie die Zeichenfolge selbst während der Iteration:Beachten Sie, dass dies nicht ein array, nur einen String anzeigen, den Inhalt der Liste. Erstellen Sie ein array von einer Liste, die Sie verwenden können,Liste.toArray():
Kurze Antwort:
System.out.println(errors.toString().substring(1, errors.toString().length() - 1))
Erklärung: beim Aufruf der
System.out.println(obj)
mit einemObject
als parameter, der gedruckte text wird das Ergebnis derobj.toString()
.ArrayList.toString()
ist umgesetzt in einer Weise, die es darstellen, deren Inhalt zwischen den Klammern[]
in eine kommaseparierte Verkettung der einzelnen enthaltenen Elemente (.toString()
Darstellung auch).Es ist nicht eine gute Praxis, setzen auf eine andere Klasse
toString()
Umsetzung. Sie sollten Ihren eigenen Weg, um format zu Ihrem Ergebnis.errors.length
berücksichtigt nicht die Komma-Trennzeichen. Auchlength
ist ein Feld, keine Methode..toString()
fehlt 🙂 FixerDie Klammern sind eigentlich nicht in der Liste es ist nur eine Darstellung der Liste. Wenn jedes Objekt geht in eine String-Ausgabe die Objekte, die toString () - Methode aufgerufen wird. Im Falle der ArrayList diese Methode liefert den Inhalt der Liste eingewickelt durch diese Klammern.
Wenn Sie möchten, drucken Sie Ihre ArrayList ohne Klammern nur Durchlaufen und drucken Sie es.
Den Klammern sehen Sie nur eine automatische Möglichkeit zum anzeigen einer Liste in JAVA (bei Verwendung
System.out.println(list);
zum Beispiel.Wenn Sie nicht wollen, Ihnen zu zeigen, Wann es zu zeigen, können Sie erstellen Sie eine benutzerdefinierte Methode :
Dann passen Sie diesen code, um zu zeigen, das nach Ihren wünschen !
Gibt es keine Klammern innerhalb Ihrer Liste.
Dies ist nur die Art, wie Java-druckt eine Liste standardmäßig.
Wenn Sie drucken möchten Sie den Inhalt Ihrer Liste, können Sie so etwas wie dieses
Wenn Sie drucken Ihre Fehler-Liste, wird es intern nennen die
toString()
Methode Ihrer Liste und dieser Methode fügen Sie die Klammern. Es gibt ein paar Möglichkeiten. Können Sie den String übertoString()
Methode ein, entfernen Sie die Klammern aus dem String. Oder Sie schreiben Ihre eigene Methode zum drucken der Liste.System.out.print();
zu befestigen und optimieren von code 🙂Dies ist ein
ArrayList
vonInteger
. DieseArrayList
sich nicht enthalten, einen Charakter wie'['
. Aber können Sie einInteger
von ihm mögen dieses -Klammern ist nicht Teil Ihrer array-Liste, weil, wie Sie erwähnt haben, es ist Integer eingegeben
beim drucken Fehler mit
es ist nur die Formatierung der Daten, nur zum iterieren über das array und drucken jeden Wert einzeln
System.out.println(error.toString().substring(1, error.toString().length()-1));
Dieser arbeitete für mich