您好,我想以表格格式打印hashmap的数据。下面是我在hashmap中插入数据的代码。
String foldername = item.getParent().substring(item.getParent().lastIndexOf("/") + 1);
statusname = foldername + "\t" + _DeployResult.ServerIP + "\t" + _DeployResult.ServerType;
if (!Prdeploy.statusmap.containsKey(statusname)) {
Prdeploy.statusmap.put(statusname, 0);
}
及以下是为在日志文件中打印数据而编写的代码:
logger.info("****************Summary Report****************");
logger.info("Folder\tServer\tType\tFailed");
for (String name: statusmap.keySet()){
String key =name.toString();
String value = statusmap.get(name).toString();
System.out.println(key + " " + value);
logger.info(key + "\t" + value);
}
logger.info("**********************************************");
这里我得到上面的输出如下:
****************Summary Report****************
Folder Server Type Failed
180_Perl_Scripts 10.5.50.195 SS 0
050_Images 10.5.50.195 SS 0
020_XSL 10.5.50.195 SS 0
srf 10.5.50.195 SS 0
030_XSLT 10.5.50.195 SS 0
bscript 10.5.50.195 SS 0
bscript 10.5.50.195 WS 1
010_StyleSheets 10.5.50.195 SS 0
040_WebTemplates 10.5.50.195 SS 0
050_Images 10.5.50.195 WS 0
060_js_Files 10.5.50.195 SS 0
010_StyleSheets 10.5.50.195 WS 0
**********************************************
但我希望我的输出如下:
****************Summary Report****************
Folder Server Type Failed
180_Perl_Scripts 10.5.50.195 SS 0
050_Images 10.5.50.195 SS 0
020_XSL 10.5.50.195 SS 0
srf 10.5.50.195 SS 0
030_XSLT 10.5.50.195 SS 0
bscript 10.5.50.195 SS 0
bscript 10.5.50.195 WS 1
010_StyleSheets 10.5.50.195 SS 0
040_WebTemplates 10.5.50.195 SS 0
050_Images 10.5.50.195 WS 0
060_js_Files 10.5.50.195 SS 0
010_StyleSheets 10.5.50.195 WS 0
**********************************************
在这里,我无法确切地说出模式。但我只是想把它变成表格格式。好的结构。 有办法做到这一点吗?请帮帮我!
答案 0 :(得分:3)
试试这个
String str = String.format("%-10s%-10s%-10s%s", statusMap.get("Folder"), statusMap.get("Server"), statusMap.get("Type"), statusMap.get("Failed"));
logger.info(str);
答案 1 :(得分:2)
您可以使用String.format方法格式化字符串。
`logger.info(String.format("%-20s %-20s%-10s%-10s" , "Folder", "Server", "Type", "Failed" ));`
其中%s是您字符串的占位符。 ' - '使结果左对齐。 20和10是字符串的宽度
答案 2 :(得分:0)
如果你只需要这个用于显示目的,那就是你真的不需要它作为制表符,那么很容易创建一个padRight()或padLeft()方法,这些方法会用空格填充字符串
类似的东西:
String padRight(String inputStr, int length)
{
while(inputStr.length() <= length)
inputStr = inputStr + " ";
return inputStr;
}
这可以很容易地修改为接受你想要填充的任何角色。
答案 3 :(得分:0)
使用标签页并不容易。使用tab需要了解的是它包含在空格组中。我认为标签的默认值是4个空格。这样就可以了。
开始__ 中间 _end
下划线组是一个标签。每个下划线都是一个空间。
你有Start
长度为5.所以它重叠1.所以当你按Tab键时它会进入位置8(就像4个两个标签),即3个空格。与中间相同。
您需要使用的是formatter