Mappa su String in Java


89

Quando lo faccio System.out.println(map)in Java, ottengo un bel output in stdout. Come posso ottenere la stessa rappresentazione di stringa di a Mapin una variabile senza interferire con lo standard output? Qualcosa di simile String mapAsString = Collections.toString(map)?

Risposte:


143

Usa Object#toString().

String string = map.toString();

Dopotutto è anche quello che System.out.println(object)fa sotto i cofani . Il formato per le mappe è descritto in AbstractMap#toString().

Restituisce una rappresentazione di stringa di questa mappa. La rappresentazione di stringa consiste in un elenco di mappature valore-chiave nell'ordine restituito dall'iteratore della entrySetvista della mappa , racchiuso tra parentesi graffe ("{}"). Le mappature adiacenti sono separate dai caratteri "," (virgola e spazio). Ogni mappatura valore-chiave viene visualizzata come chiave seguita da un segno di uguale ("=") seguito dal valore associato. Chiavi e valori vengono convertiti in stringhe come da String.valueOf(Object).


3
Premere F3 sul metodo Map toString () è fuorviante! Ti porta direttamente a Object.toString () - dovresti pensare prima di impegnarti in F3
Adam

2
@Adam, è perché chiami toString () sull'interfaccia, dove questo metodo, ovviamente, non è definito. Il tuo IDE non conosce l'effettiva implementazione in fase di esecuzione. Non dovresti biasimarla.
Victor Dombrovsky

@VictorDombrovsky Qualsiasi IDE decente (ad es. IntelliJ, Eclipse, ecc.) Dovrebbe essere in grado di rintracciare l'effettiva implementazione di un metodo definito in un'interfaccia.
Wheeler

@wheeler toString()non è dichiarato Mape, se lo fosse: Mapha 21 classi di implementazione. Quale di questi dovrebbe essere preferito rispetto agli altri quando l'implementazione effettivamente utilizzata è nota solo in fase di esecuzione?
Gerold Broser

Ma i valori chiave non sono citati due volte, quindi non è un JSON valido se qualcuno cerca di usarlo come JSON
P Satish Patro

11

Puoi anche usare la classe Joiner di google-collections (guava) se desideri personalizzare il formato di stampa

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.