如何在Java中显示链接列表的内容?

时间:2012-04-02 08:27:28

标签: java

在Java中,我创建了一个链表类并添加了一堆值。但我不知道如何显示这些值。

我尝试了以下操作:

System.out.println(list);

但它打印出一些奇怪的值,如ADTList@,然后是一些乱码。

8 个答案:

答案 0 :(得分:3)

“ADTList @(后跟一些乱码)”由默认的toString()方法创建。覆盖它以打印有用的东西。这可能需要覆盖列表实现和元素。

假设ADTList是您自己的链接列表实现,它的toString方法可能如下所示:

@Override
public String toString() {
    Iterator<Object> i = iterator();
    if (! i.hasNext()) {
        return "[]";
    }

    StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        Object element = i.next();
        sb.append(e == this ? "(this Collection)" : element);
        if (! i.hasNext()) {
            return sb.append(']').toString();
        }
        sb.append(", ");
    }
}

正如ChristofferHammarström在评论中所提到的那样,这是从JDK的AbstractCollection课程中复制而来的。它添加了字符以使其像列表一样,例如“[x,y,z]”并且还处理包含其自身的列表。

值得一提的是,默认toString中的'乱码'确实有意义。它是对象是其实例的类的名称,对象的hashCode的十六进制值 - 默认hashCode()将代表内存位置。

答案 1 :(得分:3)

您必须遍历链接列表中的所有项目并打印其值,否则,请覆盖每个项目的toString方法。

答案 2 :(得分:3)

for(Object o : list){
    System.out.println(o);
}

答案 3 :(得分:1)

您必须通过调用 iterator()在该列表中获得 Iterator 。然后调用 next()获取元素,直到 hasNext()返回false。

Iterator<Object> i = list.iterator();
while(i.hasNext())
    System.out.print(i.next()+"\t");

答案 4 :(得分:1)

你需要迭代它才能看到内容。

for(Object obj : list) {
  System.out.println(obj);
}

但你的对象需要覆盖.toString()。

答案 5 :(得分:1)

您可以打印列表中每个循环执行a的每个值:

List<String> list = new LinkedList<>();
//Fill the list 

for (String s : list)
     System.out.println(s);

答案 6 :(得分:1)

如果您已创建自己的链接列表实现(为什么要这样做?),如果要打印列表的内容,还需要覆盖toString()的默认行为用户友好的方式。

如果您使用LinkedList中提供的java.util,那么您在问题中显示的代码行将按预期打印。

答案 7 :(得分:0)

重写toString方法并编写自己的实现来打印有用的信息。

public String toString(){
   System.out.println("*** CONTENTS ***");
   for(Object obj: this){
     System.out.println(obj);
     //May be you will be required to override toString in your custom domain class to make it more useful
   }

   System.out.println("*** ******** ***");
}
相关问题