打印存储 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
}
}
您必须覆盖属于 Object
的 toString()
方法。基本上,当你打印出一个 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()
方法,它将打印正常。
我有一个名为 (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
}
}
您必须覆盖属于 Object
的 toString()
方法。基本上,当你打印出一个 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()
方法,它将打印正常。