关于equals的重写,补充说明
Peng's Blog 只记录和技术相关的东西

关于equals的重写,补充说明

2017-07-12

在前面两篇博客中提到重写equals方法,详情见:http://blog.tanpeng.net/2017/07/10/OverrideEquals/

public class Group {
    private String groupName;
    private int load;

    getset那些就不写了
      
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Group)) return false;
        Group group = (Group) o;
        return Objects.equals(getGroupName(), group.getGroupName());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getGroupName(), getLoad());
    }
}

上部分代码能实现一种很炫酷的效果:

只要对象的groupname相同,用equals进行比较,返回的就是TRUE

但是这时候会遇到一个问题,就是equals返回TRUE,但hashcode返回FALSE。

equals的结果和hashcode的结果不同,这是大忌。

所以这东西,还是看情况使用吧。


Comments

评论功能暂停使用,如需跟作者讨论请联系底部的GitHub