重写equals和hashCode

Posted 宋发准

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重写equals和hashCode相关的知识,希望对你有一定的参考价值。

package com.fz.song.hashCode;

import java.awt.*;

/**
 * Created by sfz on 2017/9/6.
 */
public class Cat {

    private String name;

    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


    /**
     * 重写equals方法:重写了equals,就一定要重写hashCode方法.切记!
     *
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj) {

        if (this == obj) {
            return true;
        }
        if (!(obj instanceof Cat)) {
            return false;
        }
        Cat obj1 = (Cat) obj;
        return obj1.getName().equals(this.getName()) && obj1.getAge() == this.getAge();
    }


    /**
     * 重写hashCode方法.
     *
     * @return
     */
    @Override
    public int hashCode() {
        int result = 17;
        result = result * 31 + name.hashCode();
        result = result * 31 + age;

        return result;
    }
}

 

以上是关于重写equals和hashCode的主要内容,如果未能解决你的问题,请参考以下文章

重写hashcode和equals怎么重写

重写HashCode和equals规范

JAVA中重写equals方法为啥要重写hashcode方法说明

Java的hashCode和equals方法

为什么重写equals()就必须重写hashCode(),什么情况下可以不重写hashCode()

为什么重写equals后要重写hashCode