我有以下代码。地图结构是' Map< String,Long []>地图'它具有以下值:
< com.service.a,21221,2121>
< com.service.b,5454,8787>
< com.service.c,1227,0>
public static void savetoFile(Map<String, Long[]> result, String filepath) throws IOException
{
FileWriter fw = new FileWriter(filepath,true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
for (String name: result.keySet())
{
String key =name.toString();
Long[] value = result.get(name);
//System.out.println(key + " " + value);
pw.println(key+","+value);
}
pw.flush();
pw.close();
}
在运行此功能时,我得到以下输出:
{com.service.a=[Ljava.lang.Long;@135fbaa4, com.service.b=[Ljava.lang.Long;@4b67cf4d, com.service.c=[Ljava.lang.Long;@7ea987ac,}
如何摆脱这个错误?我已经通过了他们建议使用toString()方法的某些链接,但我不确定如何在此函数中应用它。
我希望将上述值存储到CSV文件中:
com.service.a,21221,2111
com.service.b,5454,8787
com.service.c,1227,0
答案 0 :(得分:1)
当您调用 pw.println(键+&#34;,&#34; +值); 时,在Long []上调用.toString() - 默认的toString方法返回名称对象的类+&#34; @&#34; +对象的哈希码。 如果您需要人类可读的值,则需要调用 Arrays.toString(value) ,而不是 value 。
答案 1 :(得分:1)
考虑为每条记录构建字符串,如下所示:
for (String name: result.keySet())
{
String key =name.toString();
Long[] value = result.get(name);
//System.out.println(key + " " + value);
StringBuilder record = new StringBuilder();
record.append(key);
for (long l : value)
{
record.append(", ");
record.append(l);
}
pw.println(record.toString());
}