test代码,为什么test中的最后一个contain,不是返回true。要怎么让他能返回true。而不false呢
Food类中的equals和hascode方法
public boolean equals(Food food) {
if(this.id == food.id){
return true;
}
return false;
}
public int hashCode() {
int result ;
result = foodName.hashCode();
return result;
}
@Test
//测试代码
public void test5() {
Map map = new HashMap<Integer, Integer>();
Food f1 = new Food();
Food f2 = new Food();
Food f3 = new Food();
f1.setId(11);
f2.setId(22);
f3.setId(11);
f1.setFoodName("11");
f2.setFoodName("22");
f3.setFoodName("11");
map.put(f1, 22);
map.put(f2, 2233);
System.out.println(map.get(f1));
System.out.println(map.get(f2));
System.out.println(map.containsKey(f3));
}
运行结果
22
2233
false
------解决思路----------------------
你对java的HashMap还是不了解,hashcode只是hashmap用来快速索引未知的条件,并不是判断key是否相同的条件,正真判断key是否相同是equals方法,所以加入f3是不会覆盖f1的,map.get(f3)也只会是f3的值,不会是f1的值