java没有HashMap的等式依赖于EntrySet。钥匙套?
我有一个Java对象,其中我重写了用于比较所有值的equals()
方法。我比较的成员变量之一是HashMap<String, MyObject>
。即使其中存储的键和MyObject相等,哈希映射似乎也不相等
当我调试测试并查看这两个hashmap时,我可以看到EntrySet
并不相等。但是我能在它们中看到的唯一区别是一个EntrySet.keySet
是null,另一个是条目。作为KeySet
对象的键集
我现在的问题是:HashMap的equals()
方法是否依赖于这个值
(我不想让你帮我调试代码,我只想了解发生了什么事)
# 1 楼答案
您可以通过查看HashMap#Equals()的源代码轻松地检查这一点。比较非空键的值
编辑:
解释:条目是
{key,value}
对。HashMap在入口集中维护这些Entry
。现在比较两个映射:我可以遍历所有Entry
并继续比较Entry.value with anothermap.get(Entry.key)
。因此,本质上,在比较地图时,你的equals()
值对象很重要