Java ArrayList toString()方法

Java ArrayList toString()方法,java,arrays,list,arraylist,linked-list,Java,Arrays,List,Arraylist,Linked List,我有一个包含多个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<Linked

我有一个包含多个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());
        }
    }

}
和我的节点类:

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,但我只得到LinkedList的地址:

kruskal.LinkedList@2cc47220
kruskal.LinkedList@1520a9d6
kruskal.LinkedList@136e2b70
kruskal.LinkedList@25e5d007
kruskal.LinkedList@12bc8f01
kruskal.LinkedList@19509443
kruskal.LinkedList@7935c7b0

知道我的toString()方法为什么不起作用吗?我假设我需要LinkedList类中的方法,但我将返回什么?

问题是,您的
LinkedList
类中没有定义
toString()
方法,因此它将继承,这将负责您看到的输出

换句话说,此方法返回一个等于以下值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())

重写
LinkedList
中的
toString()
,并返回希望看到打印的
字符串。

问题在于,在
LinkedList
类中没有定义
toString()
方法,因此它将继承,这将负责您看到的输出

换句话说,此方法返回一个等于以下值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())

重写
LinkedList中的
toString()
,并返回希望看到打印的
字符串。

您需要重写
LinkedList的
toString
方法
你可以这样做:

@Override
public String toString() {
    String res = "[";
    Node current = this.head;
    while(current != null) {
        res += current.toString() + "\t";
        current = current.next;
    }

    res += "]";
    return res;
}
当然。。。然后还必须重写
节点#toString

示例代码:

@Override
public String toString() {
    return data.toString();
}

您需要覆盖
LinkedList的
toString
方法

你可以这样做:

@Override
public String toString() {
    String res = "[";
    Node current = this.head;
    while(current != null) {
        res += current.toString() + "\t";
        current = current.next;
    }

    res += "]";
    return res;
}
当然。。。然后还必须重写
节点#toString

示例代码:

@Override
public String toString() {
    return data.toString();
}

因为您没有在
LinkedList
类中重写
toString
方法。因为您没有在
LinkedList
类中重写
toString
方法。我希望能够返回我的ArrayList(我的列表[I])中包含的指定(I)LinkedList。我只需要返回我的_列表[I]?我希望能够返回我的ArrayList(我的_列表[I])中包含的指定(I)LinkedList。我是否只返回我的_列表[I]?我现在得到一个空指针异常。我的输出是否仍然需要是System.out.println(my_list.get(i.toString())?是的,你应该继续使用这个电话!我的代码中实际上有些错误。我刚刚更新了我的答案。你能试试那个新版本吗?我现在得到一个空指针异常。我的输出是否仍然需要是System.out.println(my_list.get(i.toString())?是的,你应该继续使用这个电话!我的代码中实际上有些错误。我刚刚更新了我的答案。你能试试那个新版本吗?