使用HashSet 存储自定义对象,为什么需要重写hashCode()和equals()?

HashSet 存储用的哈希表结构,哈希表需要用到hashCode()和equals()方法:
hashCode()产生hash 值以计算内存位置;
当hash 值相同时要调用equals()方法进行比较。
如果不重写,调用的是Object 的hashcode,而Object 的hashCode 实际上是地址。系统类
已经覆盖了hashCode 方法。
所以HashSet 存储自定义对象的化要重写hashCode()和equals()方法,目的是告诉程序去除
重复元素的策略。

你可能感兴趣的:(java,equals,hashcode)