每个对象都有hashCode(),java默认的情况下,hashCode()是根据对象所在的地址计算获取。在不重写 equals()方法时,默认是用“==”做比较。
如果两个对象相等,那么他就是同一个对象,地址肯定相等,所以,他的hashCode()一定相等。
如果两个对象hashCode()相等,对象不一定相等。哈希冲突。
重写了equals()方法不一定要重写hashCode()方法,只有需要用到对象散列时才需要重写hashCode()方法。如果不重写hashCode(),默认是根据对象所在的地址计算获取,那么大概率两个内容相同的对象的hashCode()是不同的,这样hashset里面就会有重复的元素。这种情况下,重写equals()方法就必须重写hashCode()方法。
hashCode()和 equals()
最新推荐文章于 2024-07-15 22:44:41 发布