Java 重写equals方法

Posted Vincen_shen

tags:

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

List对象的contains方法实际上也是调用的equals()方法来进行逐条对比的。

 示例代码:

package com.imooc.collection;

/**
 * 课程类
 */

public class Course {
    private String id;
    private String name;

    public Course(){

    }

    public Course(String id, String name) {
        this.id = id;
        this.name = name;
    }

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

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

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    /**
     * 重写 Course类的 Equals方法
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj){
        if(this == obj) {
            return true;
        }

        if(obj == null) {
            return false;
        }

        if(!(obj instanceof Course)){
            return false;
        }

        Course course = (Course) obj;
        if(this.name.equals(course.name) && this.id.equals(course.id)) {
            return true;
        }
        return false;
    }

}

 

 

Set对象的contains方法跟List实现方式不一样,是先调用hashCode()方法返回hash码,如果hash码一致,再调用equals()方法。

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }

 

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

java容器中关于equals的重写

请问各位大佬这道java的重写equals和重写hashcode方法内部是啥意思呀?

重写了equals方法为何需要重写 hashCode

为啥重写equals方法,一定要重写HashCode方法?

JAVA 为啥要重写equals 方法才能对一个值进行操作(容器)

重写equals 方法的注意事项