问题标签 [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 投票
4 回答
3566 浏览

c# - 我应该使用我的字符串字段的串联作为哈希码吗?

我在 C# 中有一个 Address 类,如下所示:

我正在实现平等,所以我需要覆盖哈希码。起初我打算使用 EJ 的哈希码公式,但后来我想:这些都是字符串字段,我不能只使用 StringBuilder 连接它们并从该字符串返回哈希码吗?

那是:

这样做的优点/缺点是什么?为什么我不应该这样做?

0 投票
5 回答
14697 浏览

java - JVM 如何确保 System.identityHashCode() 永远不会改变?

通常,默认实现Object.hashCode()是内存中对象的分配地址的某些功能(尽管JLS没有强制要求)。鉴于虚拟机在内存中分流对象,为什么System.identityHashCode()在对象的生命周期内返回的值从不改变?

如果它是“一次性”计算(对象的hashCode计算一次并隐藏在对象头或其他东西中),那么这是否意味着两个对象有可能具有相同的identityHashCode(如果它们恰好在内存中的相同地址)?

0 投票
3 回答
2399 浏览

java - 基于身份的 Java 哈希码

Object.hashCode() 的默认行为本质上是返回对象的“地址”,因此当且仅当 a == b 时 a.hashCode() == b.hashCode()。如果超类已经定义了 hashCode(),如何在用户定义的类中获得这种行为?例如:

想法?

0 投票
1 回答
3179 浏览

java - 高效的 hashCode() 实现

我经常使用 IntelliJ IDEA 自动生成一个类的hashCode()方法,通常该方法采用以下形式:

我的问题是乘以 31 的目的是什么?我知道这是一个质数,但为什么要专门选择 31?此外,如果hashCode()为一个特别小/大的数据集实现一个,人们会以不同的方式解决这个问题吗?

0 投票
8 回答
24238 浏览

java - HashMap 中的双倍

我正在考虑使用 Double 作为 HashMap 的键,但我知道浮点比较是不安全的,这让我开始思考。Double 类的 equals 方法是否也不安全?如果是这样,那将意味着 hashCode 方法可能也不正确。这意味着使用 Double 作为 HashMap 的键会导致不可预知的行为。

谁能在这里证实我的任何猜测?

0 投票
4 回答
5608 浏览

c# - 是否可以结合私有成员的哈希码来生成新的哈希码?

我有一个对象,我想为其生成一个唯一的哈希(覆盖 GetHashCode()),但我想避免溢出或不可预测的事情。

该代码应该是组合一小部分字符串的哈希码的结果。

散列码将是生成缓存键的一部分,因此理想情况下它们应该是唯一的,但是被散列的可能值的数量很小,所以我认为概率在这里对我有利。

这样的事情就足够了吗?有没有更好的方法呢?

编辑:感谢到目前为止的回答。@Jon Skeet:不,顺序不重要

我想这几乎是另一个问题,但由于我使用结果来生成缓存键(字符串),使用像 MD5 这样的加密哈希函数还是只使用这个 int 的字符串表示是否有意义?

0 投票
2 回答
3668 浏览

hash - 动态完美散列和通用散列函数 - 请解释一下?

所以我正在阅读有关哈希表、哈希函数等的内容。我很感兴趣地阅读了维基百科上关于“动态完美哈希”如何涉及使用第二个哈希表作为数据结构来在特定存储桶中存储多个值的信息。

然而,我迷失的地方是如何选择通用哈希函数来执行第二个哈希表的哈希。谁能解释这个通用哈希函数是如何从存储在桶中的值确定的?我模糊地遵循维基百科的“通用哈希函数”页面中的推理和逻辑,但我很难对它有任何直觉。特别是,这些函数如何保证不发生冲突?或者至少,如果它们被处理掉并在检测到冲突时生成一个新的,我们怎么知道这可以在实际的时间内完成?

请问瓢虫书的解释?

0 投票
4 回答
12981 浏览

c# - 在 C# 中创建 GetHashCode 方法

在 C# 中为类创建自己的 GetHashCode 方法的最佳方法是什么?假设我有一个简单的类(它覆盖了 Equals 方法),如下所示:

我应该使用 GetHashCode 方法的默认代码吗?

我应该基于我的课程内容的方法吗?

还是我应该做点别的?

0 投票
3 回答
975 浏览

java - .NET 等效于用于内部类型数组的 java.util.Arrays.hashCode() 函数?

对于 int[]、short[]、float[] 等内在类型的数组,是否有等效于java.util.Arrays.hashCode()的 .NET 实用程序类?

显然,我可以编写自己的实用程序类,但试图在 .NET 框架中找到一个已经可用的类。

0 投票
7 回答
1378 浏览

algorithm - 为一组点计算哈希码的最佳方法是什么?

我正在寻找为一组二维点计算哈希码的最佳方法(以便我可以将多边形存储在哈希表中)。

有一些明显的方法可以做到这一点,例如连接字符串中的所有点坐标及其哈希码,但这会非常慢。

在速度/碰撞谱的另一端,例如,我还可以总结所有坐标,这会产生非常快的代码,但也会产生很多碰撞。

为一组点计算哈希码的最佳方法是什么?

如果坐标是整数(与实际坐标相比),最优解是否不同?

编辑:我使用的是 .net,所以哈希码应该是 32 位长。