作者:旧情人旧往事_322 | 来源:互联网 | 2023-08-11 16:12
我正在尝试使用带有自定义类和哈希码方法的自定义类的哈希映射进行测试:
public class Car {
public int hashcode() {
return 1;
}
@Override
public boolean equals(Object o1) {
return true;
}
}
主类:
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap map = new HashMap();
Car c1 = new Car();
Car c2 = new Car();
System.out.println(c2.equals(c1));
System.out.println(c1==c2);
map.put(c1,"car1");
map.put(c2,"car2");
System.out.println(map.size());
System.out.println(map.get(c1));
}
我期望输出为1和car2,但它的输出为2和car1。谁能解释原因。对于每个汽车对象,我的Equals均适用,并且哈希码也相同。
谢谢
这是一个错字。哈希码没有被覆盖。我创建了一个方法hashcode()而不是hashCode()。更正提供了预期的结果。