gpt4 book ai didi

java - 哈希码实现

转载 作者:行者123 更新时间:2023-12-01 06:36:07 26 4
gpt4 key购买 nike

class A{

@Override
public int hashCode() {
return 10;
}
}

public class SampleClass {

public static void main(String[] args){
Map map = new HashMap();

map.put(new A(), "A");
map.put(new A(), "B");

System.out.println(map.size());

System.out.println(new A().hashCode());
System.out.println(new A().hashCode());
}
}

输出:-

2

10

10

为什么是2???如果我们正在实现返回相同整数的 hashCode 方法。大小不应该是1吗???

最佳答案

您尚未重写equals(Object),因此它们比较时不相等。

仅仅因为两个对象具有相同的哈希码并不意味着 HashMap 就认为它们是相同的 - 事实上,如果是这样的话,那就是真的非常糟糕。

如果您希望 A 对象被 HashMap 视为相等,则必须重写 A 中的 equals(Object) 将一个 A 定义为等于另一个。

关于java - 哈希码实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11378014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com