黑马程序员技术交流社区

标题: hashcode [打印本页]

作者: 黄陂酷歌    时间: 2014-3-8 16:02
标题: hashcode
hashcode是什么意思?是不是相当于一个对象的代号?
作者: 三眼皮    时间: 2014-3-8 16:41
hashCode()方法就是返回对象的哈希码。然后根据这个哈希码在内存中存储。当用equals()方法比较两个对象相等时,这两个对象也应该返回相等的hashCode.hashCode是标识一个对象,每个对象都有一个唯一的hashCode。可以打印出来看看
Person p = new Person();
System.out.println(p);
作者: skyname    时间: 2014-3-8 17:41
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,他们“存放在同一个篮子里”。例如:

作者: 一诺千金    时间: 2014-3-8 18:36
Hashcode的作用:提高查找对象的效率 分区域存储 先计算对象的Hashcode值 然后再去相应的区域查找。(前提是存在Hash集合)所以eqauls对象相等,Hashcode值必须相等。
作者: My_work    时间: 2014-3-8 19:53
hashcode是一种编码方式,在Java中,每个对象都会有一个hashcode(是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值),Java可以通过这个hashcode来识别一个对象。
有一个概念要牢记,两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象。
作者: 欧阳疯    时间: 2014-3-8 22:03
用最简单的方法来说,hashcode就是一个签名。当两个对象的hashcode一样时,两个对象就有可能一样。如果不一样的话两个对象就肯定不一样。
一般用hashcode来进行比较两个东西是不是一样的,可以很容易的排除许多不一样的东西。
最常用的地方就是在一堆东西里找一个东西。先用你要找的东西的hashcode和所有东西的hashcode比较,如果不一样的话就肯定不是你要找的东西。如果一样的话就很可能是你要找的东西。然后再进行仔细的比较两个东西是不是真的一模一样。

//一个不能加重复内容的容器
class Set {
Object[] objs = new Object[10]; //装东西的的数组
int size = 0; //已经有几个东西 ...




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2