有没有办法在Java中更改Map的输出格式?
我只需要使用 System.out.println 以某种格式打印地图,而不使用“while”或“for”。
我必须打印一张看起来像的地图
a 1
b 2
c 3
使用 System.out.println(map);
但现在看起来像
{a=1, b=2, c=3}
我该怎么办?
回答
最简单的方法是像这样打印它。
map.forEach((k,v)->System.out.printf("%s %s", k,v));
另一种方法是在创建地图时覆盖 toString。
Map<String,Double> map = new HashMap<>() {
public String toString() {
StringBuilder sb = new StringBuilder();
for(Entry<?,?> e : this.entrySet()) {
sb.append(e.getKey() + " " + e.getValue());
}
return sb.toString();
}
};
然后你可以做
System.out.println(map);
但我仍然会采用第一种方式。使用增强的 for 循环可以轻松打印地图时无需覆盖 toString。而且我真的不喜欢覆盖 API 方法,除非有很好的理由这样做。