Mapa a cadena en Java


88

Cuando lo hago System.out.println(map)en Java, obtengo un buen resultado en stdout. ¿Cómo puedo obtener esta misma representación de cadena de a Mapen una variable sin interferir con la salida estándar? Algo como String mapAsString = Collections.toString(map)?

Respuestas:


141

Utilice Object#toString().

String string = map.toString();

Después de todo, eso es también lo que System.out.println(object)hace bajo las capotas . El formato de los mapas se describe en AbstractMap#toString().

Devuelve una representación de cadena de este mapa. La representación de cadena consta de una lista de asignaciones de clave-valor en el orden devuelto por el entrySetiterador de la vista del mapa , entre llaves ("{}"). Las asignaciones adyacentes están separadas por los caracteres "," (coma y espacio). Cada asignación de clave-valor se representa como la clave seguida de un signo igual ("=") seguido del valor asociado. Las claves y los valores se convierten en cadenas como por String.valueOf(Object).


3
¡Presionar F3 en el método Map toString () es engañoso! Te lleva directamente a Object.toString () - debes pensar antes de participar en F3
— Adam

2
@Adam, eso es porque llamas a toString () en la interfaz, donde este método, por supuesto, no está definido. Su IDE no conoce la implementación real en tiempo de ejecución. No deberías culparla.
— Victor Dombrovsky

@VictorDombrovsky Cualquier IDE medio decente (por ejemplo, IntelliJ, Eclipse, etc.) debería poder rastrear la implementación real de un método definido en una interfaz.
— Wheeler

@wheeler toString()no se declara en Mapy si lo estuviera: Maptiene 21 clases de implementación. ¿Cuál de ellos debería preferirse sobre los demás cuando la implementación realmente utilizada solo se conoce en tiempo de ejecución?
— Gerold Broser

Pero los valores clave no se citan dos veces, por lo tanto, no es un JSON válido si alguien intenta usarlo como JSON
— P Satish Patro

11

También puede usar la clase de unión de google-collections (guava) si desea personalizar el formato de impresión

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.