我想知道是否有任何工具可以快速打印地图以进行调试。
Map
的toString()
方法来得到一个一行的版本,其中包含了键/值对。如果这个输出不够可读,你可以自己编写循环来打印或使用Guava库来实现:System.out.println(Joiner.on('\n').withKeyValueSeparator(" -> ").join(map));
这将会给你一个以下形式输出:
键1 -> 值1 键2 -> 值2 ...
org.apache.commons.collections.MapUtils.debugPrint(System.out, "Print this", myMap);
Map<String, String> map = new HashMap<String, String>();
for (Iterator<String> iterator = map.keySet().iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
System.out.println(map.get(key));
}
System.out.println(map.toString());
public final class Foo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
System.out.println(map);
}
}
输出:
{key2=value2, key1=value1}
System.out.println
与map结合使用效果非常好,如下所示:Map<String, Integer> map = new HashMap<String, Integer>();
map.put("key1", 1);
map.put("key2", 2);
System.out.println(map);
打印:
{key1=1, key2=2}
public void printMap(Map<?, ?> map)
{
for (Entry<?, ?> e : map.entrySet())
{
System.out.println("Key: " + e.getKey() + ", Value: " + e.getValue());
}
}
StringUtils.join
(来自Commons Lang)。Map<String, String> map = new HashMap<String, String>();
map.put("abc", "123");
map.put("xyz", "456");
System.out.println(StringUtils.join(map.entrySet().iterator(), "|"));
abc=123|xyz=456