我有一个包含多个LinkedList对象的数组列表。我的主要代码是:
import java.io.*;
import java.util.AbstractList;
import java.util.*;
public class Sort {
public static void main (String[] args){
int listNum = 0;
File file = new File("input.txt");
ArrayList<LinkedList> my_lists = new ArrayList<LinkedList>();
try {
Scanner sc = new Scanner(file);
while (sc.hasNextLine()) {
System.out.println("List" + listNum);
String line = sc.nextLine();
LinkedList the_list = new LinkedList();
String[] templist = line.split("\\s*,\\s*");
for(int i=0; i<templist.length; i++){
String temp = templist[i];
the_list.add(temp);
System.out.println(temp);
}
listNum++;
my_lists.add(the_list);
}
sc.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
for(int i=0;i<my_lists.size();i++){
System.out.println(my_lists.get(i).toString());
}
}
}
这是我的LinkedList对象类:
package kruskal;
import java.util.AbstractList;
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;
}
}
我的节点类:
package kruskal;
public class Node {
public Object data;
public Node next;
public Node(Object data,Node next){
this.data=data;
this.next=next;
}
}
在我的主要部分代码结束时,我尝试执行for循环,在我的ArrayList中显示每个LinkedList,但我只获取LinkedLists的地址:
kruskal.LinkedList@2cc47220
kruskal.LinkedList@1520a9d6
kruskal.LinkedList@136e2b70
kruskal.LinkedList@25e5d007
kruskal.LinkedList@12bc8f01
kruskal.LinkedList@19509443
kruskal.LinkedList@7935c7b0
知道为什么我的toString()方法不起作用?我假设我需要在LinkedList类中使用该方法,但是我将返回什么?
答案 0 :(得分:5)
问题是您没有在toString()
类中定义LinkedList
方法,因此它会继承the toString()
method from Object
,它负责您看到的输出。< / p>
换句话说,此方法返回一个等于值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
覆盖toString()
中的LinkedList
并返回您要查看的String
。
答案 1 :(得分:2)
您需要覆盖 toString
的{{1}}方法。
你可以这样做:
LinkedList
当然......你还必须覆盖@Override
public String toString() {
String res = "[";
Node current = this.head;
while(current != null) {
res += current.toString() + "\t";
current = current.next;
}
res += "]";
return res;
}
;)
示例代码:
Node#toString