本帖最后由 郭孟涛 于 2013-2-19 02:48 编辑
请问比较的时候是怎么依次输出的一下结果?特别是第二行的 29 和 30是什么时候被赋值的?分析半天没看懂。总觉得是同时赋值的。
30 30
29 30
29 30
29 29
38 29
38 30
29 29
14 29
14 29
27 29
27 29
27 14- 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(ts);
- }
- }
-
- //同姓名同年龄的学生视为同一个学生。按照学生的年龄排序。
- 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 = obj;
- Student stu = (Student)obj;
- System.out.println(this.age+" "+stu.age);//这里是什么时候被赋值?
-
- 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;
- }
- }
复制代码 |