これまでは、ハッシュマップ内部の作業について非常に明確でした。しかし、以下のコードスニペットを見ると少し混乱します。ハッシュマップの出力
次のコードでは、私のクラスのequals()
メソッドは常にfalseを返します。したがって、私はHashMap.get()
からと決してそのクラスの鍵を見つけることが期待されます。
誰かが私を説明できますか?私が知っているgetメソッドでは、ハッシュコードを計算し、正確なバケットを見つけるでしょうが、equalsがfalseを返しているので、3を返すことができますか?
package com.vikash.Theory.CollectionsFramework;
public class Emp {
private String firstName;
private String lastName;
public Emp(String firstName,String lastName) {
this.firstName=firstName;
this.lastName=lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int hashCode() {
return firstName.hashCode()+lastName.hashCode();
}
public boolean equals(Object o) {
return false;
}
}
public class Test {
public static void main(String[] args) {
Map<Object,Integer> map=new HashMap<Object,Integer>();
Emp e1=new Emp("Vikash","Mishra");
Emp e2=new Emp("Mishra","Vikash");
Emp e3=new Emp("Mishra","Vikash");
map.put(e1, 1);
map.put(e2, 2);
map.put(e3, 3);
/*e2.setFirstName("Vikash");
e2.setLastName("Mishra");*/
System.out.println("Size of the map is:"+map.size());
System.out.println(map.get(e3)); } }
ヒント:**ハッシュ**マップ –
3つの非等価キーを入力しているので、3を返しています...何を返すと思いますか、なぜですか? –
彼のポイントは、 'equals()'は常に 'false'を返すので、' get() 'がnullを返すと期待します。 – slim