黑马程序员技术交流社区

标题: TreeSet中的compareTo比较问题 [打印本页]

作者: 刘文飞    时间: 2012-11-21 18:47
标题: TreeSet中的compareTo比较问题
本帖最后由 刘文飞 于 2012-11-21 21:30 编辑
  1. import java.util.*;
  2. class TreeSetDemo01
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 TreeSet ts = new TreeSet();
  7.                 ts.add(new Person("lili",20));
  8.                 ts.add(new Person("lili",21));
  9.                 ts.add(new Person("lili",22));
  10.                 ts.add(new Person("lili",23));
  11.                 System.out.println(ts);
  12.         }
  13. }
  14. class Person implements Comparable
  15. {
  16.         private String name;
  17.         private int age;
  18.         public Person(String name,int age)
  19.         {
  20.                 this.name = name;
  21.                 this.age = age;
  22.         }
  23.         public int compareTo(Object obj)
  24.         {
  25.                 // if(!(obj instanceof Person))
  26.                 // {
  27.                         // throw new RuntimeException("Not Person!!");
  28.                 // }
  29.                 // Person per = (Person)obj;
  30.                 // if(this.age>per.age)
  31.                 // {
  32.                         // return 1;
  33.                 // }
  34.                 // if(this.age==per.age)
  35.                 // {
  36.                         // return 0;
  37.                 // }
  38.                 // return -1;
  39.                 return 1;         //1示当前对象大于需要比较的对象,那么后面存入的应该都是放在二叉树的左侧的,
  40.                                //那么输出应该是与输入顺序相反的啊??
  41.         }
  42.         public String toString()
  43.         {
  44.                 return this.name + "---" + this.age;
  45.         }
  46. }
复制代码
/*Output:
G:\hezi\Code>java TreeSetDemo01
[lili---20, lili---21, lili---22, lili---23]


*/

作者: 张学永    时间: 2012-11-21 18:54
你搞反了。。。当前对象是后放入的元素,它会和集合里已经有的元素比较,所以是后进去的元素
调用compareTo()方法和集合里已经有的对象做比较,返回正数往右边放,返回负数往左边放。返回0就相同了。。。
作者: 刘文飞    时间: 2012-11-21 21:30
张学永 发表于 2012-11-21 18:54
你搞反了。。。当前对象是后放入的元素,它会和集合里已经有的元素比较,所以是后进去的元素
调用compareTo ...

额,谢谢歌神了:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2