为什么有时候要重写hashcode()和equals()方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cg_Amaz1ng/article/details/84389382

因为要用到HashTable,HashMap,HashSet等利用哈希值来存取的时候,不同的哈希值对应不同的bucket,如果不重写,那么同一个类实例化后得到的对象的哈希值是不一样的,接着会调用equals方法,由于两个对象分配在堆上不同位置,因此默认也不会相等,这样就算你想让这两个对象等同也不可能,HashTable/HashMap中将会有两条你本来不想重复的数据。

猜你喜欢

转载自blog.csdn.net/cg_Amaz1ng/article/details/84389382