对于hashCode方法不理解
来源:3-9 选择题
qq_黯嘫吢碎_4
2019-09-02 10:56:47
1、hashCode方法重写与不重写的区别是什么
2、hashCode方法返回的是什么
3、hashCode方法重写影响返回结果吗
4、3-8视频中重写了equals方法,为什么还要重写hashCode方法
1回答
同学你好,
1、如果不重写hashcode,则使用的是Object类中的方法,其值为对象的存储地址。如果你重写了equals,比如说是对象的内容相同的,而没有重写hashCode方法,那么很可能某两个对象明明是地址和值是相同的,而hashCode的地址却不一样。
2、hashcode方法返回该对象的哈希码值。
3、会有影响,如果对象没有重写hashcode()方法,任何对象的hashCode()方法都是不相等的;进行重写后,同一个对象多次调用hashCode()方法都会返回相同的值。
4、如果没有重新写hashcode()方法的话,那么比较对象(两个对象equals相同,hashcode不同)的时候,会认为是两个不同的对象,就会将两个对象放入Set集合,这和Set的性质(无需不重复)产生冲突,是不正确的,所以重写equals方法就需要重写hashcode方法
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题