对于hashCode方法不理解

来源:3-9 选择题

qq_黯嘫吢碎_4

2019-09-02 10:56:47

1、hashCode方法重写与不重写的区别是什么

2、hashCode方法返回的是什么

3、hashCode方法重写影响返回结果吗

4、3-8视频中重写了equals方法,为什么还要重写hashCode方法

写回答

1回答

好帮手慕酷酷

2019-09-02

同学你好,

1、如果不重写hashcode,则使用的是Object类中的方法,其值为对象的存储地址。如果你重写了equals,比如说是对象的内容相同的,而没有重写hashCode方法,那么很可能某两个对象明明是地址和值是相同的,而hashCode的地址却不一样。

2、hashcode方法返回该对象的哈希码值。

3、会有影响,如果对象没有重写hashcode()方法,任何对象的hashCode()方法都是不相等的;进行重写后,同一个对象多次调用hashCode()方法都会返回相同的值。

4、如果没有重新写hashcode()方法的话,那么比较对象(两个对象equals相同,hashcode不同)的时候,会认为是两个不同的对象,就会将两个对象放入Set集合,这和Set的性质(无需不重复)产生冲突,是不正确的,所以重写equals方法就需要重写hashcode方法

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 14452 问题

查看课程