打印存储 class 的链表时出现问题

A problem in printing linked list that stores a class

我有一个名为 (a) 的 class,它包含 (int x) 和 (Date d),所以我想通过我已经采用 l (LL存储日期) 和 m (LL 存储 class a) 然后打印它但它打印出来像 this:package1.test0$a@2f4d3709.

   package package1
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import eg.edu.alexu.csd.datastructure.linkedList.csxx_csyy.DoubleLinkedList;
import eg.edu.alexu.csd.datastructure.Stack;

public abstract class test0 {
    static class a{
        Date d ;
        int x ;
    }

    public static void main(String[] args) throws ParseException {
        a k = new a() ; //first object

        a k1 = new a() ; //2nd object

        DoubleLinkedList m = new DoubleLinkedList() ;
        DoubleLinkedList l = new DoubleLinkedList() ;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date1 = sdf.parse("2009-12-31");
        Date date2 = sdf.parse("2010-01-31");
        k.d = date2 ;            
        k.x = 1 ;    
        l.add(k.d);    // add in date LL
        m.add(k);      // add in integer and date LL
        k1.d = date1 ;
        l.add(k1.d);
        k1.x = 10 ;
        m.add(k1);
        m.print();    // print before sorting
        Sort s = new Sort() ;
        s.sortdate(l,m);       //sort by date
        m.print();    //print after sorting



    }

}

您必须覆盖属于 ObjecttoString() 方法。基本上,当你打印出一个 class 而你没有 toString() 方法时,它只是打印出一些随机的东西,只有一点点可以理解。例如:

class A {
    int data;
}

并且在主要方法中:

A a = new A();
a.data = 4;
System.out.println(a);

你会得到一些奇怪的文字。但是,在覆盖 toString() 方法之后:

class A {
    int data;

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

打印 A 的实例将调用 toString() 方法,因此无论返回什么 String 都会被打印出来。使用与之前相同的代码:

A a = new A();
a.data = 4;
System.out.println(a);

这次会打印4。对于您的自定义 LinkedList,为每个 a 对象重写 toString() 方法,它将打印正常。