package concourse;public class Groundhog2 {
int ghNumber;
Groundhog2(int n){
ghNumber=n;
} public boolean equals(Object o) {

if((o!=null)&&(o instanceof Groundhog2)){
return 

//这个类是放在集合里的,如SET,它只能放一个一样的对象就是通过比较EQUALS来的,
//那在这里前是指的集合里的哪一个ghNumber,难道是跟对象中的所有的对象的GHNUMBER
//比较吗???
ghNumber==((Groundhog2)o).ghNumber;

//而且这里传进来的是只是要O的对象了,还要ghNumber==((Groundhog2)o).ghNumber;
//才返回更是不解。。
//请指教

}

else 
return false;
} public int hashCode() {

return ghNumber;
}


}

解决方案 »

  1.   

    1. 在这个类还没有被放到集合里面的时候这个方法就已经存在了
       所以这个方法和集合无关2.虽然你知道他是Groundhog2 但是编译器不知道呀 编译器怎么能知道你在前面写了判断语句来保证? 所以不写就会编译错误
      

  2.   

    package Set; public class Employee_bean implements Comparable{
    int empno;
    String ename;

    public Employee_bean()
    {

    }

    public Employee_bean(int i,String empName)
    {
    empno=i;
    ename=empName; 
    }

    public void setEmpno(int i)
    {
    empno=i;
    }

    public int getEmpno()
    {
    return empno;
    }

    public void setEname(String empName)
    {
    ename=empName; 
    }

    public String getEname()
    {
    return ename;
    }

    public int compareTo(Object o)
    {
    Employee_bean e=(Employee_bean)o;
    //就好比在这里,这个THIS指的是谁 ,如果有多个Employee_bean 的时候比如在集合中,跟集合//中的每个Employee_bean 吗???
    if(this.empno==e.empno)
    return 0;
    else if(this.empno>e.empno)
    return 1;
    else
    return -1;
    }
    }
      

  3.   

    public boolean equals(Object o){
    if(o==this) return true;
    if(!(o instanceof Groundhog2)) return false;
    final Groundhog2 other=(Groundhog2)o;
    if(ghNumber!=other.ghNumber) return false;
    return true;
    }public int hashCode(){
    return ghNumber.hashCode();
    }
      

  4.   

    this 指的是使用了 compareTo(Object o) 方法的对象
    比如  
    Employee_bean a;
    a.compareTo(object o);this.empno 指的就是 a.empno
    this指向对象自身