【Java之基础】简述hashcode和equals的区别

简述hashcode和equals的区别

如果在hashmap当中来说的话,作用分别如下:

  1. hashcode是定位当前元素,需要找到某个元素在当前数组(桶)当中的下标
  2. equals是需要在hashcode定位的某个下标(桶)中遍历链表,比较哪个key是相同的。

举个例子,如果我们要在字典中查找“美丽”这个词语,我们应该先找到“美”在哪个地方,那么实际上我们找“美”的过程就可以理解成hashcode。查找“美”字后,由于“美”后面(下标)有很多字可以组成词语,例如“美人”、“美景”等等。但我们需要找到的是“美丽”,所以应该依次比较第二个字是否为“丽”,此时就相当于使用到equals了。

如果两个数据的hashcode相同,那么equals相同吗?

如果两个数据的hashcode相同,那么一定能hash到同一位置(同一下标)。但由于该下标是一个链表,有很多节点,存放的元素有很多,所以equals不一定相同。

如果两个数据的hashcode不相同,那么equals相同吗?

如果两个数据的hashcode不相同,那么两个数据的下标都不一样,那么equals就更不可能相同了!

如果两个数据的equals相同,那么hashcode相同吗?

如果两个数据的equals相同,那么一定是同一个对象,因此hashcode就一定相同了!

猜你喜欢

转载自blog.csdn.net/Mubei1314/article/details/122892234