//如何比较p1与P2是同一个人?用equlas重写
Person p1 = new Person("1001","刘德福");
Person p2 = new Person("1001","刘德华"); class Person{
 private String idCard;
 public String name;
public Person(String idCard,String name){
 
 this.idCard = idCard;
 this.name = name;
 }


}

解决方案 »

  1.   

    Eclipse右键-->Source-->Generate hashCode() and equals()...
      

  2.   


    class Person {
    private String idCard;
    public String name; public Person(String idCard, String name) { this.idCard = idCard;
    this.name = name;
    } @Override
    public boolean equals(Object obj) {
    if (this == obj)
    return true;
    if (obj == null)
    return false;
    if (getClass() != obj.getClass())
    return false;
    Person other = (Person) obj;
    if (idCard == null) {
    if (other.idCard != null)
    return false;
    } else if (!idCard.equals(other.idCard))
    return false;
    if (name == null) {
    if (other.name != null)
    return false;
    } else if (!name.equals(other.name))
    return false;
    return true;
    } public static void main(String[] args) {
    Person p1 = new Person("1001", "刘德福");
    Person p2 = new Person("1001", "刘德华");
    System.out.println(p1.equals(p2));
    ;
    }
    }
      

  3.   

    @Override
    public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((idCard == null) ? 0 : idCard.hashCode());
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    return result;
    } @Override
    public boolean equals(Object obj) {
    if (this == obj)
    return true;
    if (obj == null)
    return false;
    if (getClass() != obj.getClass())
    return false;
    FileTest other = (FileTest) obj;
    if (idCard == null) {
    if (other.idCard != null)
    return false;
    } else if (!idCard.equals(other.idCard))
    return false;
    if (name == null) {
    if (other.name != null)
    return false;
    } else if (!name.equals(other.name))
    return false;
    return true;
    }
    加入上面代码,直接打印p1.equals(p2)
      

  4.   

    好快,开个eclipse,你居然发上来了。
      

  5.   

    先判断hashcode()方法,然后判断equals()方法。
    public class Person {
        private String idCard;
        public String name;     Person(String idCard, String name)
        {        this.idCard = idCard;
            this.name = name;
        } public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((idCard == null) ? 0 : idCard.hashCode());
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Person other = (Person) obj;
            if (idCard == null) {
                if (other.idCard != null)
                    return false;
            } else if (!idCard.equals(other.idCard))
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }    public static void main(String[] args)
        {
            Person p1 = new Person("1001", "刘德福");
            Person p2 = new Person("1001", "刘德华");
            System.out.println(p1.equals(p2));
             }
    }
      

  6.   

    请问一下hashcode()在这个里面具体怎么用,谢谢!!
      

  7.   

    重写equal和hascode方法
    public String getIdCard() {
    return idCard;
    }
    public void setIdCard(String idCard) {
    this.idCard = idCard;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    @Override
    public boolean equals(Object obj) {
    if(obj instanceof Person){
    Person p = (Person)obj;
    if(p.getIdCard().equals(this.getIdCard()))//身份证号是唯一的
    return true;
    }
     
    return false;
    }
    @Override
    public int hashCode() {
    // TODO Auto-generated method stub
    return super.hashCode();
    }
      

  8.   


    // 重写父类Object的equals方法 @Override
    public boolean equals(Object obj) {

    if(obj==null){

      return false;
    } // 首先如果是引用地址相同,那么返回ture
    if (this == obj) { return true;
    }
    // 如果比较对象不是同一类型那么返回false if (!(obj instanceof Person)) { return false;
    }
    // 强制类型转换:只能发生在拥有继承关系的多态中
    Person p = (Person) obj;

    if(p.idCard.equals(this.idCard)){

    return true;
    } return false;
    }
         //重写hashCode
    @Override
    public int hashCode() {

    return Integer.parseInt(idCard);
    }
    public static void main(String[] args){     
        System.out.println("p1.equals(p2)"+(p1.equals(p2)));