Arrays.toString(map.entrySet().toArray())
Have a look at the Guava library:
Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
System.out.println(mapJoiner.join(map));
Or put your logic into a tidy little class.
public class PrettyPrintingMap<K, V> {
private Map<K, V> map;
public PrettyPrintingMap(Map<K, V> map) {
this.map = map;
}
public String toString() {
StringBuilder sb = new StringBuilder();
Iterator<Entry<K, V>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Entry<K, V> entry = iter.next();
sb.append(entry.getKey());
sb.append('=').append('"');
sb.append(entry.getValue());
sb.append('"');
if (iter.hasNext()) {
sb.append(',').append(' ');
}
}
return sb.toString();
}
}
Usage:
Map<String, String> myMap = new HashMap<String, String>();
System.out.println(new PrettyPrintingMap<String, String>(myMap));
Note: You can also put that logic into a utility method.
Apache libraries to the rescue!
MapUtils.debugPrint(System.out, "myMap", map);
All you need Apache commons-collections library (project link)
Maven users can add the library using this dependency:
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
When I have org.json.JSONObject
in the classpath, I do:
Map<String, Object> stats = ...;
System.out.println(new JSONObject(stats).toString(2));
(this beautifully indents lists, sets and maps which may be nested)
Simple and easy. Welcome to the JSON world. Using Google's Gson:
new Gson().toJson(map)
Example of map with 3 keys:
{"array":[null,"Some string"],"just string":"Yo","number":999}
Using Java 8 Streams:
Map<Object, Object> map = new HashMap<>();
String content = map.entrySet()
.stream()
.map(e -> e.getKey() + "=\"" + e.getValue() + "\"")
.collect(Collectors.joining(", "));
System.out.println(content);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With