本帖最后由 郭孟涛 于 2013-2-15 23:48 编辑
compareTo比较函数,我学习好几天了,还是没有学会,{:soso_e101:}
现在还有两个疑问:
第一个问题:compareTo() 函数在使用的使用是自动执行的吗?我怎么没看到调用语句呢?
他是Comparable类里面构造函数的原因吗?如果是怎么和Comparable的类名不一样呢?
第二个问题:compareTo()函数怎么根据返回的-1或这1的对比值就能做出排序呢?
使用compareTo函数只需要给他返回-1 0 1 这样的三个值,他就可以自动进行排序吗?
困惑好几天了,求指教!!{:soso_e183:} 谢谢- 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); //输出结果为什么是: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;
- }
- }
复制代码 |