黑马程序员技术交流社区

标题: 求解:TreeSet 中自然排序出来点小问题麻烦大家看一下 [打印本页]

作者: 杨兴庭    时间: 2013-5-26 20:34
标题: 求解:TreeSet 中自然排序出来点小问题麻烦大家看一下
本帖最后由 杨兴庭 于 2013-5-27 11:57 编辑

自己写的Stu类实现Comparable接口,重写compareTo(Object o)方法,比较当前对象与指定对象的顺序,让Stu类成为可排序的类。代码中出现了一点小问题,麻烦大家看一下,,找出错误原因提供20金币作为感谢,提供建议提供3-5金币感谢,麻烦大家了


代码如下:
  1. public class Stu implements Comparable{
  2.         /*声明属性*/
  3.         private String name;
  4.         private int age;
  5.         
  6.         /*getter,setter方法*/
  7.         public String getName() {
  8.                 return name;
  9.         }

  10.    public void setName(String name) {
  11.                 this.name = name;
  12.         }

  13.     public int getAge() {
  14.                 return age;
  15.         }

  16.         public void setAge(int age) {
  17.                 this.age = age;
  18.         }
  19.         
  20.         /*构造方法*/
  21.         public Stu(String name, int age) {
  22.                 super();
  23.                 this.name = name;
  24.                 this.age = age;
  25.         }
  26.         
  27.         /*重写hashcode方法*/
  28.         @Override
  29.         public int hashCode() {
  30.                
  31.                 return  age*name.hashCode();
  32.         }

  33.    /*重写equals方法*/

  34.     @Override
  35.         public boolean equals(Object o) {
  36.                
  37.                 Stu s=(Stu) o;
  38.                 return age==s.age&&name.equals(s.name);
  39.         }


  40.         /*重写toString方法*/
  41.         public String toString() {
  42.                 return name+age;
  43.         }
  44.         
  45.         
  46.         
  47.         /*重写comparaTo方法*/
  48.         
  49.         @Override
  50.         public int compareTo(Object o) {
  51.                
  52.                 Stu s=(Stu) o;
  53.                
  54.                 if(s.getAge().compareTo(this.getAge())>0){                    //就是在这里报错了,麻烦大家指正
  55.    
  56.           return -1;
  57.                 }
  58.                 else if(s.getAge().compareTo(this.getAge())==0){
  59.                         return  0;
  60.                         
  61.                 }
  62.                   
  63.                 else{
  64.                           return 1;
  65.                 }
  66.                
  67.         }

  68.         }
复制代码

a1.jpg (27.09 KB, 下载次数: 0)

报错的代码

报错的代码

作者: 王靖远    时间: 2013-5-26 20:41
占楼在看
作者: 王靖远    时间: 2013-5-26 20:46
你这样写肯定不行的int类型不能用compareTo的 你转成Integer就OK了
new Integer(s.getAge()).compareTo(new Integer(this.getAge()))>0;
作者: 杨兴庭    时间: 2013-5-26 20:48
王靖远 发表于 2013-5-26 20:41
占楼在看

额,,哥么又被你占了沙发,准备报哪一期啊  你技术分早够了能提交入学申请了
作者: 杨兴庭    时间: 2013-5-26 20:48
王靖远 发表于 2013-5-26 20:41
占楼在看

额,,哥么又被你占了沙发,准备报哪一期啊  你技术分早够了能提交入学申请了
作者: 王靖远    时间: 2013-5-26 20:54
杨兴庭 发表于 2013-5-26 20:48
额,,哥么又被你占了沙发,准备报哪一期啊  你技术分早够了能提交入学申请了 ...

21期啊。
作者: 花开花落总相似    时间: 2013-5-26 21:42
王靖远 发表于 2013-5-26 20:41
占楼在看

   你也21期啊 看你怪活跃的   
作者: 王靖远    时间: 2013-5-26 21:57
花开花落总相似 发表于 2013-5-26 21:42
你也21期啊 看你怪活跃的

嘿嘿,时间多啊
作者: 花开花落总相似    时间: 2013-5-26 22:01
王靖远 发表于 2013-5-26 21:57
嘿嘿,时间多啊

   扣扣号多少 咱也进21期 没事交流一下
作者: 王靖远    时间: 2013-5-26 22:08
花开花落总相似 发表于 2013-5-26 22:01
扣扣号多少 咱也进21期 没事交流一下

qq号8759328
作者: 殇_心。    时间: 2013-5-27 10:14
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!




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