两种方法的作用
hashcode用于快速定位位置,equals用于确保将要存储的对象与原对象是否相同
实现规则
对于一个使用hashcode方式存储的集合或者列表来说,同一个对象只能存在一个位置,不能出现在不同位置出现相同对象的情况,对象的equals比较结果和hashcode值应该保持一种统一的关系,即两个相等的对象其hashcode值也应保持一致。
默认方法介绍
默认的equals方法是根据内存地址的不同来判断两个对象是否相等。
默认的hashcode方法一般情况下也认为是根据内存地址的来进行hash运算的。也有说是使用的是随机数来进行的生成,这个依据jvm的具体实现不同有所区别。
对于重写equals或hashcode方法
对于依赖hashcode方法的集合实现,如HashMap、HashSet
只重写hashcode方法不重写equals方法的问题是:两个相同对象经过hashcode方法会产生相同的hash值,会被费配到相同的位置进行存储,但因为equals方法没有被重写,默认是按照内存地址来判断两个对象是否相等,而两个对象的内存地址是不会相同的,所以会导致原本相同的两个对象,都被存储进去,从而导致了对象的重复存储。
只重写equals方法不重写hashcode方法会导致的问题是:两个相同的对象,因为内存地址不同,通过默认的hashcode方法,出现的hash值是不相同的,其会被分配到不同的位置存储,所以也会导致两个相同对象的重复存储。
结论:equals方法和hashcode方法最好一起重写,这样能够保证使用集合存储数据是唯一的
标签:存储,对象,重写,equals,hashcode,方法 From: https://blog.csdn.net/weixin_47879114/article/details/144849448欢迎关注微信公众号:空想兔,一起交流学习经验