为了账号安全,请及时绑定邮箱和手机立即绑定

hashcode方法有什么用?

hashcode方法有什么用?

慕田峪是谁我也不认识 2018-03-16 18:47:38
查看完整描述

1 回答

?
mark_fork

TA贡献11条经验 获得超10个赞

你好,纠正一下是hashCode()。

【什么是hash】

首先,需要明白hash是什么,hash是用来快速定位元素的一种数据结构,如给定一个变量我们可以通过hash 确定这个变量在内存中的位置 即 变量a 经过 hash(a)->就可以确定这个元素在内存中的位置。

下面是比较重要的信息:

【hashCode 方法的作用】

  1. object基类 中 有hashcode(),这就导致了所有我们自建的类都继承了hashcode 方法。

  2. hashcode在单一类当中只是一个实例方法并没有什么大的作用。


[hashcode 应用]

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


所以总结:

  1. 多个 单一类对象实例中,如果两个对象的hashCode() 相同 ,那么两个对象equals()  一定相同 因为是同一个对象,但equals相同 hashCode()不一定相同

  2. 在HashTable、HashSet、HashMap 集合中存储的对象,hashCode 与 equals 结合来确保元素的肉眼可见的非重复性。


查看完整回答
反对 回复 2018-03-16
  • 1 回答
  • 0 关注
  • 1008 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信