本帖最后由 郭孟涛 于 2013-2-14 03:29 编辑
-
- import java.util.*;
-
-
- class TreeSetDemo2
- {
- public static void main(String[] args)
- {
- TreeSet ts = new TreeSet();
-
- ts.add(new Student("lisi0",30));
- ts.add(new Student("lisixx",29));
- ts.add(new Student("lisi9",29));
- ts.add(new Student("lisi8",38));
- ts.add(new Student("lisixx",29));
- ts.add(new Student("lisi4",14));
- //ts.add(new Student(39));
- ts.add(new Student("lisi7",27));
-
-
-
- System.out.println(new Student("lisi0",30)); //输出结果为什么是:lisi0::30 ?这个值怎么从构造函数中传到toString函数中了呢?
- }
- }
-
- //同姓名同年龄的学生视为同一个学生。按照学生的年龄排序。
- class Student implements Comparable
- {
- private int age;
- private String name;
- Student(String name,int age)
- {
- this.age = age;
- this.name = name;
- }
-
- public int compareTo(Object obj)
- {
-
- Student stu = (Student)obj;
-
- int num = new Integer(this.age).compareTo(new Integer(stu.age));
-
- return num==0?this.name.compareTo(stu.name):num;
-
- /*
- if(this.age>stu.age)
- return 1;
- if(this.age==stu.age)
- return this.name.compareTo(stu.name);
- return -1;
- */
- /**/
- }
-
- public int getAge()
- {
- return age;
- }
- public String toString()
- {
- return name+"::"+age;
- }
- }
复制代码 以上代码中的31行,打印输出结果为什么是:lisi0::30 ?这个值怎么从构造函数中传到toString函数中了呢?
我觉得值就是接收到了构造函数里面。其它toString和compareTo函数 我没有发现调用他们的语句 怎么就执行了呢?
|
|