问题标签 [hashcode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5480 浏览

java - Java 覆盖 hashCode() 得到 StackOverflowError

所以我并不精通覆盖 hashCode 并且我似乎在 hashCode 方法上有一些无限递归。

这是我的场景,我有一个 DuplicateCache 类,它是一个缓存对象,用于检查我们系统中的重复对象。我有一个静态内部类 Duplicate,它代表 Duplicate 对象。

DuplicateCache 维护一个 HashMap 来跟踪它的所有条目。每个条目都包含一个作为键的 Duplicate 对象和一个作为值的 Long 对象。

我正在使用 Duplicate 对象键执行所有操作,当我将 put 方法运行到 HashMap 中时,Duplicate 对象的 hashCode() 方法中会出现无限递归。

重复的 hashCode() 方法调用我必须覆盖的另一个类的 hashCode,所以我将在之后包含它

事不宜迟,这是我的违规 Duplicate 类的代码:

这适用于 Duplicate 对象,现在是 MagicPrice hashCode() 方法:

在此类中,值字段是 BigDecimal,iso4217code 是字符串。对于它的价值,stackTrace 最终死于 BigDecimal hashCode() 方法,但我不相信 BigDecimal hashCode() 方法会被破坏。

有人可以向我解释一下我对这个 hashCode() 覆盖的遗漏吗?我知道一定有什么我做错了才能产生这种行为。

这是我的日志文件中的堆栈跟踪:

此外,该跟踪引用了一个专有的 get 方法,因此为您提供:

expire() 是一种基于时间删除表中旧条目的方法 hashtable 是 HashMap 对象

谢谢!

0 投票
6 回答
30917 浏览

java - 如何实现 hashCode 和 equals 方法

我应该如何在 Java 中实现hashCode()以下equals()类?

0 投票
12 回答
18722 浏览

java - 如果 hashCode() 没有被覆盖,对象的哈希码是什么?

如果 hashCode() 方法没有被覆盖,那么在 Java 中对任何对象调用 hashCode() 的结果是什么?

0 投票
3 回答
3841 浏览

c# - .NET 字典解决冲突的效果如何?

我有一个需要为表格键入的自定义对象的问题。我需要生成一个唯一的数字键。我遇到了碰撞问题,我想知道是否可以利用字典来帮助我。假设我有一个这样的对象:

等等更多的领域。假设 Foo 和 Bar 是我的关键字段 - 如果它们在两个 Thingys 之间相等,那么这两个对象应该被认为是相等的(一个可能代表另一个对象的更新,而 Others 字段正在更新。)所以我有这些:

所以这在大多数情况下都有效,但在极少数情况下,实际上不同的两个 Thingy 具有相同的哈希码。

我的问题是:我可以使用 Dictionary <Thingy, int> 放入我的 Thingys 的位置,并使用从字典中出来的顺序值作为我的实际键吗?我想知道字典在检测到罕见的哈希码冲突时是否会调用我的 Equals 方法,确定对象实际上是不同的,并以不同的方式存储它们。然后我在查找它时进行成像,它会看到一个用于该哈希的存储桶并搜索正确的东西,再次使用 Equals 进行比较。

字典是这种情况,还是仅解决哈希码不同但(哈希%大小)相同的冲突?如果这行不通,有什么可能?

0 投票
2 回答
518 浏览

java - 为什么 Sun 指定 String.hashCode() 实现?

关于依赖当前实现是否安全似乎一直存在争议,String.hashCode()因为从技术上讲,规范(Javadoc)保证了这一点。

  1. 为什么 SunString.hashCode()在规范中指定 ' 的实现?
  2. 为什么开发人员需要依赖 hashCode() 的特定实现?
  3. 为什么太阳这么怕String.hashCode()以后换了天就塌了?(这可能由#2 解释)
0 投票
31 回答
544011 浏览

java - 为什么我需要覆盖 Java 中的 equals 和 hashCode 方法?

最近我通读了这个 Developer Works Document

该文档是关于定义hashCode()equals()有效和正确的,但是我无法弄清楚为什么我们需要覆盖这两种方法。

我怎样才能决定有效地实施这些方法?

0 投票
2 回答
303 浏览

hashcode - HashCode,试图获取单词或数字的最后几个字母

我有这个 hashCode 函数,我一直在尝试用 Eclipse 实现,但我的测试一直失败。我正在尝试编写一个返回单词或数字的最后 2 或 3 个字符的 Hashcode 函数。这是我当前的代码:

这是我的 Junit 测试:

每次我运行我的测试它失败表明:

预期但为:<96727>

现在我真的很想让这个函数接受一个单词或数字并返回所接受对象的最后两个或三个字符。有谁知道如何使用 hashCode 来做到这一点。非常感激任何的帮助

0 投票
2 回答
1315 浏览

hashtable - 关于哈希表的几个问题

我已经阅读了很多关于 Hash Tables 以及如何在 C 中实现 on 的内容,我想我几乎已经掌握了所有概念,因此我可以开始编写自己的代码,我只是有几个问题尚未解决正确理解。

作为参考,我一直在阅读: http ://eternallyconfuzzled.com/jsw_home.aspx

1)正如我在上面的网站上所读到的,建议哈希表大小使用 2 或素数的幂。这基本上是一个数组,并且数组具有固定大小,因此我可以快速查找我正在寻找的值。如果我有一个大输入,我不能声明一个小数组,因为它不适合,如果我的输入数据不是那么大,我不能声明一个非常大的数组,因为它浪费了内存。

哈希表的最佳大小是多少?我应该根据什么做出决定?

2)另外,在那个网站上,有几个我还没有读完的散列函数。它还指出,最好使用一个众所周知的算法并自己动手。我可能会这样做,我将从该站点中选择一个并在我的代码上对其进行测试,看看它是否根据我的输入数据最大限度地减少了冲突。

困扰我的是我如何控制哈希范围?哈希不能返回大于哈希表大小的整数,否则我们将遇到严重问题。我该如何处理?

0 投票
9 回答
12112 浏览

java - 为什么 String 的 hashCode() 不缓存 0?

我在 String 的 Java 6 源代码中注意到 hashCode 只缓存 0 以外的值。以下代码段展示了性能上的差异:

在 ideone.com 中运行它会得到以下输出:

所以我的问题是:

  • 为什么 String 的 hashCode() 不缓存 0?
  • Java 字符串散列为 0 的概率是多少?
  • 对于散列为 0 的字符串,避免每次重新计算散列值的性能损失的最佳方法是什么?
  • 这是缓存值的最佳实践方式吗?(即缓存除一个之外的所有内容?)

为了您的娱乐,这里的每一行都是一个哈希为 0 的字符串:

0 投票
5 回答
1064 浏览

java - 哈希码比较问题

我有一个在我们的例子中称为规则的对象列表,这个对象本身是一个字段列表,我必须对其进行哈希码比较,因为我们不能在系统中复制规则。

即假设我有两个规则 R1 和 R2 与字段 A 和 B。

现在,如果 R1 中 A 和 B 的值分别为 7 和 2。

在 R2 中它分别是 3 和 4 然后我用来检查系统中规则的重复性的过程是哈希码比较失败

我使用的方法是

这里 changeableAttrCodes 我们存储所有规则的哈希码。

所以请给我建议更好的方法,这样以后就不会出现这种问题,并且可以看到系统中规则的重复性。

提前致谢