码迷,mamicode.com
首页 > 其他好文 > 详细

hashcode和equals的使用

时间:2015-02-04 11:06:17      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:equals   hashcode   java   

hashcode和equals的使用

一、     说明

  hashcode和equals都是用来判断对象是否相等的。

  一般来讲equals是给代码编写者判断对象是否相等的,举个例子有个类只有名字属性,重写equals方法认为名字相等则对象相等,那么只要名字相同,对象便是相等的。

  hashcode则一般是JDK来判断对象是否相等的,比如在set集合里面判断对象是否重复,就需要判断hashcode和equals是否都相等,只有都相等才认为重复,有一个不等则认为不重复。所以我们重写equals方法的同时一般也要重写hashcode让他们逻辑保持一致。

二、     代码分析

 package hashcode;

 

public class PeopleBean{

    private int id;

    private String name;

   

    @Override

    public int hashCode() {

        return id;

    }

   

    @Override

    public boolean equals(Object obj) {

        if (null == obj){

            return false;

        }

        if (this == obj){

            return true;

        }

        if (obj.getClass() != this.getClass()){

            return false;

        }

        PeopleBeanpeopleBean = (PeopleBean)obj;

        return name.equals(peopleBean.getName());

    }

 

    public int getId() {

        return id;

    }

 

    public void setId(int id) {

        this.id = id;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

}

 

package hashcode;

 

import java.util.HashSet;

import java.util.Set;

 

public class HashCodeTest {

    public static void main(String[] args) {

        PeopleBean bean1 = new PeopleBean();

        bean1.setId(1);

        bean1.setName("11");

        PeopleBean bean2 = new PeopleBean();

        bean2.setId(2);

        bean2.setName("11");

        System.out.println(bean1.equals(bean2));

       

        Set<PeopleBean> set = new HashSet<PeopleBean>();

        set.add(bean1);

        set.add(bean2);

        System.out.println(set);

        bean2.setId(1);

        Set<PeopleBean> set1 = new HashSet<PeopleBean>();

        set1.add(bean1);

        set1.add(bean2);

        System.out.println(set1);

    }

}

输出:true

[hashcode.PeopleBean@1,hashcode.PeopleBean@2]

[hashcode.PeopleBean@1]

hashcode和equals的使用

标签:equals   hashcode   java   

原文地址:http://blog.csdn.net/tz_gx/article/details/43482587

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!