如何打印出HashMap值?输出如xxx @ da52a1

时间:2013-04-26 13:54:50

标签: java hashmap

我有2节课。

Main.java

import java.util.HashMap;
import java.util.Map;

public class Main {
    Map<Integer, Row> rows = new HashMap<Integer, Row>();
    private Row col;

    public Main() {
        col = new Row();
        show();
    }

    public void show() {
        // col.setCol("one", "two", "three");
        // System.out.println(col.getCol());

        Row p = new Row("raz", "dwa", "trzy");
        Row pos = rows.put(1, p);
        System.out.println(rows.get(1));

    }

    public String toString() {
        return "AA: " + rows;
    }

    public static void main(String[] args) {
        new Main();
    }
}

和Row.java

public class Row {

    private String col1;
    private String col2;
    private String col3;

    public Row() {
        col1 = "";
        col2 = "";
        col3 = "";
    }

    public Row(String col1, String col2, String col3) {
        this.col1 = col1;
        this.col2 = col2;
        this.col3 = col3;
    }

    public void setCol(String col1, String col2, String col3) {
        this.col1 = col1;
        this.col2 = col2;
        this.col3 = col3;
    }

    public String getCol() {
        return col1 + " " + col2 + " " + col3;
    }
}

输出总是看起来像“Row @ da52a1”或类似。如何解决?我希望能够通过轻松访问每个字符串来执行此类操作:

str="string1","string2","string3"; // it's kind of pseudocode ;)
rows.put(1,str);
rows.get(1);

正如您所看到的,我创建了类Row以将其用作Map的对象,但我不知道我的代码有什么问题。

6 个答案:

答案 0 :(得分:2)

toString方法覆盖到您的Row类,如下所示:

@Override
public String toString() {
    return col1 + " " + col2 + " " + col3;
}

答案 1 :(得分:0)

toString课程添加自定义Row方法。 toString是每个Java对象都有的方法。它存在于这样的情况。

答案 2 :(得分:0)

在Row类中覆盖toString方法,并打印要打印的值

在你的情况下,这个方法应该如下,

@Override
public String toString() {
    return col1 + " " + col2 + " " + col3;
}

答案 3 :(得分:0)

  

的System.out.println(rows.get(1));

rows.get(1)将返回Row类型的对象。因此,当您将其打印到控制台时,它将打印该对象。

要解决此问题,您可以在返回String的Row类中实现并覆盖toString()函数。

答案 4 :(得分:0)

你正在 Row @ da52a1 ,因为你最终调用 String的默认toString方法,它将类名与对象的哈希码结合起来用十六进制表示法。

通过创建自己的toString方法,您可以告诉编译器,只要在对象上调用toString,就会显示哪些值。

@Override
public String toString() {
    return this.col1 + " " + this.col2 + " " + this.col3;
}

答案 5 :(得分:-1)

return "AA: " + rows;   its calling toString method on Row object 

实际上你必须附加每列val

return "AA: " +col1 + " " + col2 + " " + col3;  //typo edited