1. 目前的J2SE所有key-value的容器类型中都会用到equals()和hashCode()方法,Java对两个方法的规定如下:
(1). 如果x.equals(y)返回“true”,那么x和y的hashCode()必须相等。
(2). 如果x.equals(y)返回“false”,那么x和y的hashCode()有可能相等,也有可能不等。
介于如上机制,在重写一个equals()的时候,一般是必须要重写hashCode()方法的。否则,相同的对象可以出现在Set/Map集合中,容器类的空间和时间效率都会大大降低
2. Object类的equals()是比较两个类的地址,hashCode()由native关键字修饰,意为由C语言的来实现的,
public native int hashCode();
用HashSet去除自定义类型的重复 - 重写equals()和hashCode()方法
最新推荐文章于 2021-08-19 20:18:38 发布
本文详细解释了Java中hashCode()和equals()方法的关系及其在容器类中的重要性。阐述了为何在重写equals()方法时通常也需要重写hashCode()方法,并讨论了这如何影响Set/Map容器的行为。
6736

被折叠的 条评论
为什么被折叠?



