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()方法
最新推荐文章于 2025-06-27 12:43:44 发布