在Java中,我创建了一个链表类并添加了一堆值。但我不知道如何显示这些值。
我尝试了以下操作:
System.out.println(list);
但它打印出一些奇怪的值,如ADTList@
,然后是一些乱码。
答案 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("*** ******** ***");
}