嗨,我正在尝试学习 hashcode () 和 equals() 方法的用途。我尝试了以下程序。
import java.util.HashMap;
public class LearnHascode {
public String name;
public int age;
LearnHascode(String na)
{
name = na;
}
public int hashCode()
{
return name.hashCode();
}
public boolean equals(LearnHascode obj)
{
return this.name.equals(obj.name);
}
public static void main(String[] args)
{
HashMap h = new HashMap();
LearnHascode ob1 = new LearnHascode("Prabha");
LearnHascode ob2 = new LearnHascode("Prabha");
h.put(ob1, v1);
h.put(ob2, v2);
System.out.println(h);
System.(h.out.printlncontainsKey(new LearnHascode("Prabha")));
}
}
输出 :
{hash.LearnHascode@8ef7bdfc=Two, hash.LearnHascode@8ef7bdfc=one}
false
我有两个疑问:
1)我认为 HashMap 将包含一个条目,因为两个对象(ob1 和 ob2)的 hascode 相同。谁能解释为什么HashMap中有两个条目?
2)为什么System.(h.out.printlncontainsKey(new LearnHascode("Prabha")));
返回false?