如何从链表java中检索数据

时间:2014-04-10 11:36:02

标签: java

嗨,我正在尝试创建一个链表来存储一些数据。如何从列表值中检索实际数据,而不是项目的对象引用。

public class myList()
{
    private LinkedList<Node> list = null;

    public myList()
    {
        list = new LinkedList<Node>();
    }

    public void addX(Node x)
    {
       list.add(x)
    }

    public void print()
    {
        for(int i = 0; i<list.size(); i++)
        {
            System.out.println(list.get(i));
        }

     }
}

public class Node
{
    private String x;
    private int y;
    private int z;

    public Node(String x, int y, int z)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

public static void main (String[] args)
{
    myList.addX(new Node(x,1,2));
    myList.print();
}

当我运行它时,它打印内存地址/引用而不是实际值。我究竟做错了什么? 输出示例:节点@ 838378c7

感谢任何帮助。

感谢。

4 个答案:

答案 0 :(得分:3)

toString()中的

Object方法是

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

这正是将被打印的内容。您需要在Node类中覆盖它以显示toString()的输出。

答案 1 :(得分:0)

您看到的输出是由默认的toString() - 方法生成的,以获得您需要覆盖toString() - 方法的输出格式。

有关详细信息,请参阅this question

答案 2 :(得分:0)

您正在打印没有Node方法的toString()类对象,因此它使用Object类的toString()来打印您看到的输出。

覆盖到toString()方法并在该方法中以您希望的方式打印内容,以便在打印Node对象时输出正如您所期望的那样

答案 3 :(得分:0)

覆盖toString类上的Node方法:

public class Node
{
    private String x;
    private int y;
    private int z;

    public Node(String x, int y, int z)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    @Override
    public String toString() {
        return x + "/" + y + "/" + z;
    }
}

此示例使用&#34; /&#34;返回x,y和z值。每个之间的分隔符。但是,您显然可以更改toString方法的返回值,以适合您希望数据显示的方式。

tutorial很好地解释了这个概念。