2010-05-13 12 views
49

Quando faccio System.out.println(map) in Java, ottengo un output piacevole in stdout. Come posso ottenere la stessa rappresentazione di stringa di uno Map in una variabile senza interferire con l'output standard? Qualcosa come String mapAsString = Collections.toString(map)?Map to String in Java

risposta

95

Utilizzare Object#toString().

String string = map.toString(); 

Questo è, dopo tutto anche quello che System.out.println(object) fa sotto le cappe. Il formato per le mappe è descritto in AbstractMap#toString().

+2

Premendo F3 sulla mappa metodo toString() è fuorviante! Ti porta direttamente a Object.toString() - dovrebbe pensare prima di ingaggiare F3 – Adam

+1

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

+0

@VictorDombrovsky Qualsiasi IDE half-decent (ad esempio IntelliJ, Eclipse, ecc.) Dovrebbe essere in grado di rintracciare l'effettiva implementazione di un metodo definito in un'interfaccia. – wheeler

8

È inoltre possibile utilizzare google-collezioni (guava) classe Joiner se si desidera personalizzare il formato di stampa