思考
hashCode和 equals 有一个协定,就是如果两个对象相等,equals判断为true,如果你只重写了equals,你自己定义了一些逻辑去判断两个对象的相等,比如id 和 name ,如果两个对象的id和name相等则相等,但是因为你没重写hashcode,他原来的计算方式可以看这个
https://www.cnblogs.com/strongmore/p/14501560.html
则这两个对象的hashcode不一样,就不满足之前的协定了
下面是一个改写hashCode和 equals 的方法
@Data
public class UrlEntity {
private Integer id;
private String url;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UrlEntity entity = (UrlEntity) o;
return Objects.equals(id, entity.id) && Objects.equals(url, entity.url);
}
@Override
public int hashCode() {
return Objects.hash(id, url);
}
参考链接
https://cloud.tencent.com/developer/article/2374759
https://www.cnblogs.com/strongmore/p/14501560.html