【问题标题】:Why equals and hashcode is not impacting hashmap size为什么 equals 和 hashcode 不影响 hashmap 大小
【发布时间】:2019-12-16 16:38:03
【问题描述】:

我正在尝试使用 hashmap 对一个自定义类进行测试,该类具有重写的 equals 和 hashcode 方法:

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<Car,String> map = new HashMap<Car,String>();
    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 对于每个汽车对象都是正确的,并且哈希码也是相同的。

谢谢,

【问题讨论】:

    标签: hashmap equals hashcode


    【解决方案1】:

    这是一个错字。hashcode 未被覆盖。我创建了一个方法 hashcode() 而不是 hashCode()。更正提供了预期的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      相关资源
      最近更新 更多