使用hashmap为什么要同时重写hashcode和equals

当equals方法被重写时,通常有必要重写hashCode方法,以维护hashCode方法的常规约定:值相同的对象必须有相同的hashCode。

HashMap是由数组和链表组成的高效存储数据的结构。那么是如何确定一个数据存储在数组中的哪个位置呢?就是通过 hashCode方法进行计算出存储在哪个位置,还记得我们上面讲 hashCode方法说了有可能两个不同对象的 hashCode方法返回的值相同,那么此时就会产生冲突,产生冲突的话就会调用 equals方法进行比对,如果不同,那么就将其加入链表尾部,如果相同就替换原数据。


版权声明:本文为huma8848888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。