Java中hashCode的作用
来源:互联网 发布:剑三数据库 编辑:程序博客网 时间:2024/05/18 01:07
以下是关于HashCode的官方文档定义:
以上这段官方文档的定义,我们可以抽出成以下几个关键点:
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
再归纳一下就是hashCode是用于查找使用的,而equals是用于比较两个对象的是否相等的。以下这段话是从别人帖子回复拷贝过来的:
最后,我们来看一个具体的示例吧,
这个输出的结果:
以上这个示例,我们只是重写了hashCode方法,从上面的结果可以看出,虽然两个对象的hashCode相等,但是实际上两个对象并不是相等;,我们没有重写equals方法,那么就会调用object默认的equals方法,是比较两个对象的引用是不是相同,显示这是两个不同的对象,两个对象的引用肯定是不定的。这里我们将生成的对象放到了HashSet中,而HashSet中只能够存放唯一的对象,也就是相同的(适用于equals方法)的对象只会存放一个,但是这里实际上是两个对象a,b都被放到了HashSet中,这样HashSet就失去了他本身的意义了。
此时我们把equals方法给加上:
此时得到的结果就会如下:从结果我们可以看出,现在两个对象就完全相等了,HashSet中也只存放了一份对象。
阅读全文
0 0
- Java中hashCode的作用
- Java中hashCode的作用
- java中hashcode()的作用
- Java中hashCode()的作用
- java中HashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- Java中hashCode的作用
- PHP将二维数组某一个字段相同的数组合并起来的方法
- maven如何添加oracle依赖
- 车辆计数--FCN-rLSTM: Deep Spatio-Temporal Neural Networks for Vehicle Counting in City Cameras
- 【Codeforces Round #430 (Div. 2) D】 D. Vitya and Strange Lesson ("带lazy" 的字典树)
- UnicodeDecodeError: 'gb2312' codec can't decode byte 0x88 in position 164111: illegal multibyte sequ
- Java中hashCode的作用
- HTML5解析--img标签--alt和title差别
- CUDA和OpenCL
- LeetCode题解系列--684. Redundant Connection
- log_bin_trust_function_creators变量解释
- Android解析数据[{},{}]类型数据解析
- 激光雷达数据读取与opencv显示1.0
- opencv(三)
- JAVA GUI组件继承体系图解析