本文主要是介绍Java 为什么重写equals方法时一定要重写hashCode方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思考
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;@Overridepublic 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);}@Overridepublic int hashCode() {return Objects.hash(id, url);}
参考链接
https://cloud.tencent.com/developer/article/2374759
https://www.cnblogs.com/strongmore/p/14501560.html
这篇关于Java 为什么重写equals方法时一定要重写hashCode方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!