hasCode和equals的区别
1个回答
展开全部
*****hascode()这个方法返回对象的散列码,返回值是int类型的散列码。
对象的散列码是为了更好的支持基于哈希机制的Java集合类,例如 Hashtable, HashMap, HashSet 等。支持此方法是为了提高哈枝氏希表(例如 java.util.Hashtable 提供的哈希表)的性能。
*****equals方法对比的是两个引用所指的对象是否是同一个引。
而我们往往需要用equals来判断 2个对象是否等价,而非验猛厅散证他们的唯一性。这样我们在实现自己的类时,就要重写equals.
equals比较开放,对于业务需求不同,可以自定义其比较的规则,比如string就对equals进行了重写,规定字符串里的字符相等就返回true
*****
在程序执行期间,只要equals方法的比较操作用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法必须始终如一地返回同一个整数。
如果两个对象根据equals方法比较是相等的,那么调用两个对象的hashCode方法必须返回相同的整数结果。
如果两个对象根据equals方法比较是不等的,则hashCode方法不一定得返回不同的整数伏梁。
hasCode相等,equals未必相等
*****重写equals方法时最好重写一下hasCode方法,确保一致性
对象的散列码是为了更好的支持基于哈希机制的Java集合类,例如 Hashtable, HashMap, HashSet 等。支持此方法是为了提高哈枝氏希表(例如 java.util.Hashtable 提供的哈希表)的性能。
*****equals方法对比的是两个引用所指的对象是否是同一个引。
而我们往往需要用equals来判断 2个对象是否等价,而非验猛厅散证他们的唯一性。这样我们在实现自己的类时,就要重写equals.
equals比较开放,对于业务需求不同,可以自定义其比较的规则,比如string就对equals进行了重写,规定字符串里的字符相等就返回true
*****
在程序执行期间,只要equals方法的比较操作用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法必须始终如一地返回同一个整数。
如果两个对象根据equals方法比较是相等的,那么调用两个对象的hashCode方法必须返回相同的整数结果。
如果两个对象根据equals方法比较是不等的,则hashCode方法不一定得返回不同的整数伏梁。
hasCode相等,equals未必相等
*****重写equals方法时最好重写一下hasCode方法,确保一致性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
名片
2024-10-28 广告
2024-10-28 广告
作为优菁科技(上海)有限公司的一员,Altair HyperWorks是我们重点代理的CAE软件套件。该软件以其全面的仿真能力、丰富的建模工具和高效的优化设计功能著称,广泛应用于汽车、航空航天、能源及电子等行业。HyperWorks通过集成...
点击进入详情页
本回答由名片提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询