当前位置: 代码迷 >> J2SE >> 关于使用settree,compareto()方法的重写有关问题
  详细解决方案

关于使用settree,compareto()方法的重写有关问题

热度:199   发布时间:2016-04-23 20:22:51.0
关于使用settree,compareto()方法的重写问题
我对编程有些概念实在是部清楚了,恳请大神解答下。
我自定义一个类,那么要使用settree就要重写compareto()这个方法才行,就像下面这样
public int compareTo(Emp o) {
if(o == null){
throw new NullPointerException("参数不能为空");
}
if(this.age<o.age){
return -1;
}else if(this.age>o.age){
return 1;
}
return 0;
}
个人理解他会A.compareto(B)这样调用, 但是我设置断点查看变量时,为什么this指代的和我O输入的是同一个变量,然后就return 0,跳出运行,设置断点后程序不能运行处结果,不设置能正常排序。求解答

------解决方案--------------------

import java.util.*;  
class Person implements Comparable{    //实现了comparable接口,必须重写compareTo方法!!!  
    private String name;  
    private int age;  
    private float score;  
      
    public Person(String name,int age,float score){  
       this.name=name;  
       this.age=age;  
       this.score=score;  
       }  
      
   public String toString(){  
    return "姓名:"+this.name+", 年龄:"+this.age+", 成绩:"+this.score;  
    }  
     
    public int compareTo(Object obj){   //compareTo方法是实现  
     Person p = (Person)obj;  
                 if(p.score>this.score){  
                        return 1;  
                  }  
                  else if(p.score<this.score){  
                        return -1;  
                   }  
                   else{  
                        if(p.age>this.age){  
                         return 1;  
                        }  
                         else if(p.age<this.age){  
                         return -1;  
                         }  
                         else{  
                             return 0;  
                            }  
                    }  
     }                            //compareTo方法结束  
}                               //类结束  
public class OOCompareTo{  
   public static void main(String []args){  
    Person p[] = new Person[5];  
    p[0] = new Person("张三 ",23,96);  
    p[1] = new Person("张三2",24,96);  
    p[2] = new Person("张三3",21,94);  
    p[3] = new Person("张三4",22,98);  
    p[4] = new Person("张三5",20,89);  
     
    Arrays.sort(p);                 //对数组p内的元素进行了遍历操作(排序) 默认的方法是compareTo