我有一个ArrayList充满了链接列表,我需要能够在该数组列表中显示特定的链接列表。
for(int i=0;i<my_lists.size();i++){
System.out.println(my_lists.get(my_lists.size()));
}
显示在输出中:
kruskal.LinkedList@a4aad7f
kruskal.LinkedList@2cc47220
kruskal.LinkedList@1520a9d6
kruskal.LinkedList@136e2b70
kruskal.LinkedList@25e5d007
kruskal.LinkedList@12bc8f01
kruskal.LinkedList@19509443
作为输出。为什么它不显示我的链表?
这是我的LinkedList类:package kruskal;
public class LinkedList {
Node head;
public LinkedList(){
this.head = null;
}
public void add (Object newData){
Node cache = head;
Node current = null;
if (cache == null)
current = new Node(newData, null);
else {
while ((current = cache.next) != null)
cache = cache.next;
cache.next = new Node(newData,null);
}
}
public Object getFront(){
return this.head.data;
}
}
由于LinkedList是一个对象,当您使用System.out.println
打印该对象时,将调用toString()
方法。因为你的类没有toString()
方法,它的父类toString()
被调用,在这种情况下很可能是Object。
所以你需要在你的LinkedList
类中覆盖toString()
方法,并以你想要的方式打印对象。
在你的代码中,这行my_lists.get(my_lists.size())
必须给你错误,因为你正在读取索引my_lists.size()
的对象,该对象不存在,并给出Index Out of bounds exception
错误。
你需要在for循环中读取LinkedList的in循环。
for(int i=0;i<my_lists.size();i++){
LinkedList link = my_lists.get(i)
//Read value from LinkedList here
for(int j=0;j<link.size();j++){
//I dont know what type of object stoer in your linked list so i get it in Object
Object obj = link.get(j); //read your value here as per data type stored.
System.out.println(obj);
}
}
问题是您没有在LinkedList
类中覆盖toString()
方法。
重写toString()
,并让它遍历列表,返回每个元素的toString()
值的CSV(如java.util.LinkedList
的实现)