我有一个名为(a)的类,其中包含(int x)和(Date d),所以我想通过一种我已经采用的方法来对按日期排序的链表进行排序,该方法采用l(LL存储日期)和m(LL存储类a),然后打印它,但它打印出来像这样: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
}
}
您必须重写属于toString()
的Object
方法。基本上,当您打印出一个类并且没有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,对每个toString()
对象覆盖a
方法,它将正常打印。