import java.util.HashMap;
import java.util.Map;
public class MapTest {
public String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public int hashCode(){
return 100;
}
@Override
public boolean equals(Object te){
return false;
}
public static void main(String[] args) {
MapTest obj = new MapTest();
MapTest obj1 = new MapTest();
obj.setId("test");
obj1.setId("test2");
Map<MapTest,Integer> test = new HashMap<MapTest,Integer>();
test.put(obj, 1000);
test.put(obj1, 2000);
test.put(new MapTest(), 4000);
System.out.println(test.get(obj)); //1000
System.out.println(test.get(obj1));//2000
System.out.println(test.get(new MapTest()));//Null
System.out.println(test.size());//3
}
}
ここでは、オブジェクトはHashMapにデータを追加する際に上書きされないようにインラインで同じハッシュコードを返すため、falseを返すequalsメソッドがあります。今私が私は適切なデータの例obj1を取得し、正確な値を与えてobjを得るが、私の質問は、両方のハッシュコードは、Javaが異なるオブジェクトを区別し、hashmapから正確な値を返す方法は同じです。オーバーライドメソッドは、HashMapに挿入中にfalseを返すメソッド