Java基础之equal()与hashcode()函数分析
来源:互联网 发布:伊本白图泰 知乎 编辑:程序博客网 时间:2024/05/13 17:23
java中Object对象重写equal()函数与hashcode()函数,先要明白equal()函数对于任何非空引用值仅当两个值引用同一个对象时此方法才返回true,此处不解释如果不明白可以在本网站搜索equal与==的区别。重写时必须保证hashcode()函数的常规规范,该规范声明相等对象必须具有相同的哈希码。
如何实现hashcode哈希码相等,具体代码如下:
1)当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true
2)当obj1.hashCode() == obj2.hashCode()为false时,obj1.equals(obj2)必须为false
equal()函数与hashcode()函数代码实例,代码图:
为了方便大家,贴出具体代码如下:
package com.yoodb;
public class Number {
private String a;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((a == null) ? 0 : a.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Number other = (Number) obj;
if (a == null) {
if (other.a != null)
return false;
} else if (!a.equals(other.a))
return false;
return true;
}
public Number(String a) {
super();
this.a = a;
}
}
总结:
hashcode()函数是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashcode值来进行判断是否相同的。
- Java基础之equal()与hashcode()函数分析
- java equal 与 hashcode
- java-基础-hashcode()和equal()
- Java - Hash - hashCode()与equal()
- 【JAVA基础】equal和hashcode的区别
- equal() 与hashcode()之我理解
- 【java基础】hashcode与equals分析
- hashCode与equal
- 重写hashcode()与equal()
- Java基础之hashcode
- java hash map深度分析(equal,hashcode,hash)
- Java之hashCode()函数
- java谜题-库谜题(复写hashcode与equal方法)
- java谜题-库谜题(复写hashcode与equal方法)
- 深入理解 equal 与 hashcode
- String的equal与hashcode
- equal与hashcode的说明
- (内存地址hashcode与对象内容hashcode)分析== 和 equal()方法
- 平衡二叉树
- 正则表达式校验一个数字字符串是否为升序
- Android 强引用,弱引用,软引用,虚引用
- Leetcode 284. Peeking Iterator
- Android 中的线程池
- Java基础之equal()与hashcode()函数分析
- WCF-Binding
- 2017.4.17解题报告f
- ssm挖坑,遇到的问题
- 10天训练营----古诗
- 自动化测试流程图
- xib等按比例布局
- Python函数调用的下划线缺省参数“_”问题
- (原创)分享自己写的几个工具类(三)Toast和Log管理类