看教程说Hashtable中hashCode的方法是把对象在内存中的地址运算后得到的,但是为什么我定义了两个对象后,得到的两个对象的hashCode相等?
Person p1=new Person("lisi",1);
Person p2=new Person("lisi",1);
p1.hashCode()==p2.hashCode()//这里是相等的,
Person p1=new Person("lisi",1);
Person p2=new Person("lisi",1);
p1.hashCode()==p2.hashCode()//这里是相等的,
可是下面这样写为什么s1和s2的hashCode相等?String s1=new String("abc");
String s2=new String("abc");
if(s1.hashCode()==s2.hashCode())
{
System.out.println("OK");
}
public synchronized int hashCode() {
int i = 0;
if (count == 0 || loadFactor < 0.0F)
return i;
loadFactor = -loadFactor;
Entry[] entrys = table;
for (int i_13_ = 0; i_13_ < entrys.length; i_13_++) {
for (Entry entry = entrys[i_13_]; entry != null;
entry = entry.next)
i += entry.key.hashCode() ^ entry.value.hashCode();
}
loadFactor = -loadFactor;
return i;
}