我有一个键和值的列表,我想打印它们,以便值彼此对齐。例如,如果我的地图是:{(key9, val9),(key10,val10)}
我想将其打印为:
key9: val9
key10: val10
我目前的解决方案非常糟糕:
int maxKeyLength = findMaxKeyLength(myMap);
for (String key : myMap.keySet()) {
int numSpaces = maxKeyLength - key.size() + 1;
// TODO: use StringBuilder instead.
String toPrint = key + ":";
for (int i = 0;i < numSpaces;++i) {
toPrint += " ";
}
toPrint += myMap.get(key);
print(toPrint);
}
这有效,但有点丑。我的问题是,有没有更好的方法可以做到这一点?
你可以尝试格式化字符串,就像这样
for (String key : myMap.keySet()) {
System.out.printf( "%-9s %-15s %n", key+":", myMap.get(key));
}
参考