Java_hashCode()以及equals()方法浅谈
来源:互联网 发布:手机淘宝 朋友代付 编辑:程序博客网 时间:2024/06/05 07:01
我们都知道,对于同一个对象类型的两个引用判断是否相等。一般采取两种方法判断。一种是用a==b?这种方式判断出来的是对象在堆内存中的地址,另外一种就是调用类的equals这个方法,因为所有自定义的类都是Object类的子类,所以没有复写父类的方法,默认就会调用Object中的equals方法。但是Object中的方法,看了API后知道,也是在判断是否两个对象的堆内存地址相同。假如现在一个学生类,两个对象的姓名和年龄都是一样的,我们一般认为他就是同一个对象,而不是去考虑是不是同一个堆内存的引用。这时候我们去复写equals方法。如下
@Override
public boolean equals(Object obj) {
if(this==obj){
return true;
}
if(obj instanceof A){
A a = (A)obj;
return this.age==a.age&&this.name.equals(a.name);
}else{
return false;
}
}
以前就是判断两个对象是否相等。下面我们来介绍一下hashcode()方法的使用场景
在HashMap中存放键值对,都是根据键的哈希值去存放的,当我们存放的键是一个对象,每次存放都会去调用hashcode这个方法,根据哈希值去存放,每个数据的位置。当我们查询时,就会去调用hashcode()方法,如果哈希值不同则判断不同,如果哈希值相同,则继续去判断对象的equals()方法。如下,
@Override
public int hashCode() {
int result = 17;
return result*31+age+name.hashCode();
}
刚才看了好多博客,都是说hashcode的原理,我想说,这个原理什么链表,你解释半天不如不解释,还不如来点直接明了的。索性,自己通过打印 然后写下自己的感悟。本人小白,不喜勿喷!
- Java_hashCode()以及equals()方法浅谈
- Java_hashCode
- 浅谈HashMap以及重写hashCode()和equals()方法
- 重写toString以及equals方法
- 浅谈java对象的equals方法
- 浅谈Java中的hashcode和equals方法
- java重写equals方法以及hashcode方法
- Java_hashCode简介
- 关于重写equals,hashcode以及compareTo方法!
- 关于重写equals,hashcode以及compareTo方法!
- 关于重写equals,hashcode以及compareTo方法!
- 关于重写equals,hashcode以及compareTo方法!
- 关于重写equals,hashcode以及compareTo方法
- 关于重写equals,hashcode以及compareTo方法
- hashCode()、equals()以及compareTo()方法的理解
- 重写equals,hashcode以及compareTo方法
- hashCode()、equals()以及compareTo()方法的理解
- 关于重写equals,hashcode以及compareTo方法
- zookeeper-数据与存储
- PyCharm 断点调试
- textView不显示三个点的问题
- Android中asset和raw区别
- JSON.parse()和eval()的区别
- Java_hashCode()以及equals()方法浅谈
- AIX-maxuproc参数案例
- 菜单--垂直+折叠+小箭头
- 8个不可不知的Mac OS X专用命令行工具
- MG-SOFT 编译时找不到root ID的问题
- 什么是X2
- 一些有用的SQL语句
- linux安装问题:what is the location of the gcc program on your machine
- jquery checkbox勾选/取消勾选的诡异问题