HashSet和HashMap集合对里面元素进行equals比较的疑问

Scaarf 2017-03-07 09:34:50
问题一:
Set集合中对元素进行是否重复判断时,是不是利用元素对象自己的hashCode()方法和equals()方法进行比对的?例如Set集合中已经有一个我自己写的Person类(已经重写了equals()和ahshCode()方法)实例p1,然后我又new了一个字段和p1一样的Person类p2,想把p2放进Set中,Set是不是会先调用Person类的hashCode()方法和equals()方法对p1和p2进行比对,然后根据结果返回true或者false,最后看p2能不能放进来。过程是这样的吗。。。。。。。

问题二:
HashSet类对象的比对set1.equals(set2)是不是也是上面那样的过程。。。。。

问题三:
另外,对两个Map类对象例如HashMap类对象map1、map2进行map1.equals(map2)的疑问,Map中我们老师说键是以Set形式存储,值是以Collection集合的形式存储,
那是不是进行map1.equals(map2)比较时,是不是分别调用各自的equals()方法进行判断,例如比对map1和map2中的键是否相等时是以Set中的equals()方法判断,然后Set中的equals()里面再通过元素对象的hashCode()和equals()方法进行判断的,
进行值是否相等判断时是以Collection中的equals()方法进行判断,然后Collection中的equals()方法里再用集合中的元素的equals()方法进行判断的。。。。。。

知道问题有点多,但是这个看了好久了,感觉懂了又好像没懂。。。。求指点
...全文
130 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧