java中的hashCode()方法
程序员文章站
2024-03-17 08:39:28
...
1.hashCode()
每个类都会继承Object,hashCode是Object类的native方法
2.hashCode的作用
JVM没new一个对象放入到堆中(理解成一个hashTable),下次为了快速找到他,就通过hashCode值找到,当然如果两个实力的hash一样,就会产生hash冲突,该hash链表就会存在两个对象,这时就要通过equals方法比较了(比较两个对象是否指向同一内存地址)
3.String 是重写了hashCode的
String的hashCode值通过char数组的元素进行散列后得到的值
4.String重写了equals
public boolean equals(Object anObject) {
if (this == anObject) {//先判断是否指向同一地址
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {//判断char[]长度是否相同
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {//循环比较char[i]是否相同
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
5.验证
User没有重写 hashCode,他们的hashCode是不同的
重写后,设计属性name和age的散列,返回值一样
上一篇: C++贪心算法单源最短路径问题——Dijkstra算法
下一篇: Dart学习之方法函数