Zuordnung zu String in Java


88

Wenn ich System.out.println(map)in Java mache , bekomme ich eine schöne Ausgabe in stdout. Wie kann ich dieselbe Zeichenfolgendarstellung von a Mapin einer Variablen erhalten, ohne mich in die Standardausgabe einzumischen? So etwas wie String mapAsString = Collections.toString(map)?

Antworten:


141

Verwenden Sie Object#toString().

String string = map.toString();

Das ist nach allem auch , was System.out.println(object)tut die Hauben unter . Das Format für Karten ist in beschrieben AbstractMap#toString().

Gibt eine Zeichenfolgendarstellung dieser Karte zurück. Die Zeichenfolgendarstellung besteht aus einer Liste von Schlüsselwertzuordnungen in der Reihenfolge, die vom entrySetIterator der Kartenansicht zurückgegeben wird , in geschweiften Klammern ("{}"). Benachbarte Zuordnungen werden durch die Zeichen "," (Komma und Leerzeichen) getrennt. Jede Schlüsselwertzuordnung wird als Schlüssel gerendert, gefolgt von einem Gleichheitszeichen ("=") gefolgt vom zugehörigen Wert. Schlüssel und Werte werden wie von in Zeichenfolgen konvertiert String.valueOf(Object).


3
Das Drücken von F3 auf der Map toString () -Methode ist irreführend! Bringt Sie direkt zum Object.toString () - sollte überlegen, bevor Sie F3 aktivieren
— Adam

2
@Adam, das liegt daran, dass Sie toString () auf der Schnittstelle aufrufen, wo diese Methode natürlich nicht definiert ist. Ihre IDE kennt die tatsächliche Laufzeitimplementierung nicht. Du solltest sie nicht beschuldigen.
— Victor Dombrovsky

@ VictorDombrovsky Jede halbwegs anständige IDE (z. B. IntelliJ, Eclipse usw.) sollte in der Lage sein, die tatsächliche Implementierung einer in einer Schnittstelle definierten Methode aufzuspüren.
— Wheeler

@wheeler toString()ist nicht deklariert in Mapund wenn ja : Maphat 21 implementierende Klassen. Welche davon sollten den anderen vorgezogen werden, wenn die tatsächlich verwendete Implementierung nur zur Laufzeit bekannt ist?
— Gerold Broser

Die Schlüsselwerte werden jedoch nicht in doppelte Anführungszeichen gesetzt, daher kein gültiger JSON, wenn jemand versucht, ihn als JSON zu verwenden
— P Satish Patro

11

Sie können auch die Joiner-Klasse google-collection (Guave) verwenden, wenn Sie das Druckformat anpassen möchten

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.