こんにちは、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
私には2つの疑問があります:
1)2つのオブジェクト(ob1とob2)のhascodeが同じであるため、HashMapには1つのエントリが含まれると思いました。HashMap に 2 つのエントリがある理由を説明できる人はいますか?
2) System.(h.out.printlncontainsKey(new LearnHascode("Prabha")));
false を返すのはなぜですか?