Hashmap使用[Ljava.lang.Long存储值];

时间:2017-07-14 09:35:13

标签: java csv hashmap

我有以下代码。地图结构是' 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

2 个答案:

答案 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());       
}