快捷导航

hashcode方法有什么用?

hashcode方法有什么用?

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

你好,纠正一下是hashCode()。
【什么是hash】
首先,需要明白hash是什么,hash是用来快速定位元素的一种数据结构,如给定一个变量我们可以通过hash 确定这个变量在内存中的位置 即 变量a 经过 hash(a)->就可以确定这个元素在内存中的位置。
下面是比较重要的信息:
【hashCode 方法的作用】

  • object基类 中 有hashcode(),这就导致了所有我们自建的类都继承了hashcode 方法。
  • hashcode在单一类当中只是一个实例方法并没有什么大的作用。


[hashcode 应用]

在Java集合类当中有实现map接口的HashMap、Set接口的HashSet 要知道set集合中存储的对象的引用所指向的对象是不能重复的,比如你要实现 Set students[] = new HashSet();那么Student 这个类中必须override(重写)hashCode()与equals(), 如果不重写hashCode,只重写equals(),那么当你Student a = new Student("张晓",13);Student b = new Student("张晓",13); 这两个对象的引用都能被存储至hashset 集合当中,但其实我们肉眼观察到的对象已经重复了,这就是因为hashcode没有重写,两个对象的hash code不一致导致的肉眼观察到的相同内容的对象被存储至了set集合当中。


所以总结:

  • 多个 单一类对象实例中,如果两个对象的hashCode() 相同 ,那么两个对象equals() 一定相同 因为是同一个对象,但equals相同 hashCode()不一定相同
  • 在HashTable、HashSet、HashMap 集合中存储的对象,hashCode 与 equals 结合来确保元素的肉眼可见的非重复性。
回复

使用道具 举报

可能感兴趣的问答

发新帖
TA的信息
  • 会员所属: 注册会员
  • 认证信息: 邮箱认证手机认证
  • 微信访问
  • 手机APP