因为要用到HashTable,HashMap,HashSet等利用哈希值来存取的时候,不同的哈希值对应不同的bucket,如果不重写,那么同一个类实例化后得到的对象的哈希值是不一样的,接着会调用equals方法,由于两个对象分配在堆上不同位置,因此默认也不会相等,这样就算你想让这两个对象等同也不可能,HashTable/HashMap中将会有两条你本来不想重复的数据。
为什么有时候要重写hashcode()和equals()方法
最新推荐文章于 2025-02-06 21:40:04 发布
因为要用到HashTable,HashMap,HashSet等利用哈希值来存取的时候,不同的哈希值对应不同的bucket,如果不重写,那么同一个类实例化后得到的对象的哈希值是不一样的,接着会调用equals方法,由于两个对象分配在堆上不同位置,因此默认也不会相等,这样就算你想让这两个对象等同也不可能,HashTable/HashMap中将会有两条你本来不想重复的数据。