网站建设访问人群,做门户网站赚广告费,东莞网页制作报价,天津响应式网站建设制作equals()方法
equals()方法是Object类中的一个方法#xff0c;在Object类中#xff0c;equals等同于。
在不同的类中#xff0c;往往会对equals()按需求进行重写。重写的目的都是#xff1a;用于比较两个对象是否 相等。如果两个对象的内容相同#xff0c;那…equals()方法
equals()方法是Object类中的一个方法在Object类中equals等同于。
在不同的类中往往会对equals()按需求进行重写。重写的目的都是用于比较两个对象是否 相等。如果两个对象的内容相同那么 equals() 方法应该返回 true。
hashcode()方法
hashcode()方法用于计算一个对象的哈希码,哈希码是一个整数值。哈希码主要用于哈希表(例如 HashMap、HashSet)的实现用于快速定位对象在哈希表中的位置。 Java 规定,如果两个对象是 相等 的(equals() 方法返回 true),那么它们的哈希码(hashCode() 方法返回的值)也应该是相同的如果两个对象的哈希码不同那么它们一定不相等。但是如果两个对象的哈希码相同,它们也不一定就相等,因为哈希码只是一个散列值,有可能出现不同对象的哈希码相同的情况(哈希冲突)。 重写equals()方法为什么同时要重写hashcode()
如果没有重写 hashCode() 方法默认情况下hashCode() 方法返回的是对象的内存地址散列值。这样可能会导致使用该对象作为 HashMap 或 HashSet 的 key 时无法正确地存取数据。
在我们重写equals时是为了当两个对象A和B的内容一样时把它们判定为同一个对象。所以此时重写了equals()equals()返回为true如果此时没有重写hashcode()由于A和B的地址是不同的hashcode()会把它们判定为false那么这两个对象在HashMap中被视为不同的key这显然不符合我们的预期。
我们目标是equals()和hashcode()都是true所以都要重写。