呼呼哈哈自用--实体类重写equals和hashcode

开局奉上大神的文章链接
1.https://www.cnblogs.com/yuxiaole/p/9570850.html
2.https://www.cnblogs.com/myseries/p/10977868.html

package com.xxxx.domain.DO;

/**
 * @author TXY
 */
public class UserDO {

    private Long id;

    private String name;

    private Integer sex;

    public UserDO() {

    }

    public UserDO(Long id, String name, Integer sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    @Override
    public boolean equals(Object anotherObj){
        //1.先判断是不是自己,提高运行效率
        //测试两个对象是否是同一个对象,是的话返回true
        if(this == anotherObj){
            return true;
        }
        //测试检测的对象是否为空,是就返回false
        if(anotherObj == null){
            return false;
        }
        //参数是否为正确的类型,提高代码健壮性
        //测试两个对象所属的类是否相同,否则返回false
        if (anotherObj instanceof UserDO){
            //如果是--进行向下转型,父类无法调用子类的成员和方法
            UserDO anotherUserDO = (UserDO) anotherObj;
            //最后判断类的所有属性是否相等,其中String类型和Object类型可以用相应的equals()来判断
            //若姓名和性别一样,则对象相等
            if(this.getName().equals(anotherUserDO.getName()) &&
               this.getSex().equals(anotherUserDO.getSex())){
                return true;
            }
        }
        return false;
    }

    @Override
    public int hashCode(){
        int result = 17;

        result = 31 * result + (name == null ? 0 : name.hashCode());

        result = 31 * result + (age == null ? 0 : age.hashCode());

        return result;
    }

    public static void main(String[] args) {

        UserDO user1 = new UserDO(1L, "xiaohua", 14);

        UserDO user2 = new UserDO(2L, "xiaohua", 14);

        System.out.println((user1.equals(user2)));  //打印为true
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值