重写equals为什么还要重写hashmap
时间: 2023-02-19 11:30:35 浏览: 74
因为HashMap的hashCode()方法是根据它的键值对来计算的,如果键值对发生变化,HashMap的hashCode()值也会发生变化,这样就会影响HashMap的性能,因此需要重写equals()方法来保持HashMap的性能。
相关问题
重写equals为什么要重写hashcode
重写`equals`方法和重写`hashCode`方法是Java中对象比较和哈希存储相关的操作,它们必须成对出现。
当两个对象通过`equals`比较返回`true`时,它们的`hashCode`必须相等。如果不重写`hashCode`,可能会出现两个相等的对象有不同的哈希值的情况,这会导致在哈希表(比如`HashMap`)中查询不到正确的对象。
因此,为了保证对象的正确比较和存储,当你重写`equals`方法时,一定要重写`hashCode`方法。
hashmap 中重写equals, 但不重写hashcode
的后果是什么?
如果在HashMap中重写equals()方法而不重写hashCode()方法,可能会导致在使用HashMap的其中一个方法,如get()方法时,无法正确找到要找的值。这是因为,如果未重写hashCode()方法,则hashCode()将根据对象的内存地址计算散列码,而不是根据对象的内容。这可能会导致相等的对象具有不同的散列码,因此在HashMap中搜索相等的对象可能会失败。
阅读全文