gpt4 book ai didi

java - 正确使用带有自定义类的哈希表

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:05 28 4
gpt4 key购买 nike

这段代码产生了意外的输出。

Hashtable<Pair, Integer> results = new Hashtable<Pair, Integer>();
results.put(new Pair(0, 1), 2);
System.out.println("[DBG] " + results.containsKey(new Pair(0, 1)));

输出为 [DBG] false。为什么 Hashtable 注册这个元素失败了?这与我尝试将 Pair 传递给哈希表的方式有关吗?

最佳答案

您必须覆盖 Pair 类的 hashCode()equals(..) 以指示两个对象具有相同的数字是平等的。 (最好让您的 IDE 为您生成这 2 个方法。)

Hashtable 使用hashCode() 来确定对象的散列并查找它。当您创建一个新的 Pair 实例时,Object 的默认散列实现会生成一个不同的散列,因此您的 Hashtable 无法找到该对(里面成功了)

最后 - 使用 HashMap 而不是 Hashtable 。它是更新更好的概念实现,没有不必要的同步。

关于java - 正确使用带有自定义类的哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4065216/

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