public native int hashCode();
根类Object的hashCode()方法的计算依赖于对象实例的D(内存地址),故每个Object对象的hashCode都是唯一的;
String hashCode()
public int hashCode() {
int var1 = this.hash;
if(var1 == 0 && this.value.length > 0) {
char[] var2 = this.value;
for(int var3 = 0; var3 < this.value.length; ++var3) {
var1 = 31 * var1 + var2[var3];
}
this.hash = var1;
}
return var1;
}
这个方法的主要作用:
这个函数返回了一个int 类型的hashcode, 这个值代表了这个对象的一些基本信息,可以这样说hashcode函数主要用于粗略地判断两个对象是不是相等;主要对HashMap,HashTable这个数据结构有用,对List,数组意义不太;
** 在集合查找时,hashcode能大大降低对象比较次数,提高查找效率!**
Paste_Image.png其一:在不自己实现hashCode()方法的情况下描述的是对象的物理地址信息,而我们一般重写equals方法进行对象的判等,对于对象的物理地址的描述信息有必要保存。
其二:java集合中存在一种无序但元素不重复的集合例如HashMap,保证元素不重复这个可以通过 equals方法来实现,不过当元素过多的时候,后添加的元素必然比较的次数过多。此时hashCode就非常有用了,因为其返回的是一个整数,我们可以对这个哈希值做相关处理形成对象插入数组的索引。
网友评论