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

java - C++ 中的 HashCodeBuilder

如果我想在 Java 中为给定对象生成哈希,我知道的最简单的方法是使用 Apache Commons HashCodeBuilder

C ++中有类似的东西吗?

0 投票
2 回答
997 浏览

scala - Scala 的 BigDecimal 是否违反了 equals/hashCode 合同?

根据Ordered trait需求,equalsScalaBigDecimal类上的方法与顺序一致。但是,哈希码只是从包装中获取的java.math.BigDecimal,因此与 equals 不一致。

我找不到任何关于这是一个已知问题的参考。我错过了什么吗?

0 投票
11 回答
7104 浏览

c# - 关于如何正确覆盖 object.GetHashCode() 的一般建议和指南

根据MSDN,哈希函数必须具有以下属性:

  1. 如果两个对象比较相等,则每个对象的 GetHashCode 方法必须返回相同的值。但是,如果两个对象比较不相等,则两个对象的 GetHashCode 方法不必返回不同的值。

  2. 只要确定对象的 Equals 方法的返回值的对象状态没有修改,对象的 GetHashCode 方法就必须始终返回相同的哈希码。请注意,这仅适用于应用程序的当前执行,并且如果再次运行应用程序,则可以返回不同的哈希码。

  3. 为了获得最佳性能,散列函数必须为所有输入生成随机分布。


我一直在以下场景中发现自己:我创建了一个类,实现IEquatable<T>并覆盖了object.Equals(object). MSDN指出:

覆盖 Equals 的类型也必须覆盖 GetHashCode ;否则,Hashtable 可能无法正常工作。

然后它通常对我来说有点停顿。因为,您如何正确覆盖object.GetHashCode()?永远不知道从哪里开始,而且似乎有很多陷阱。

在 StackOverflow 上,有很多与 GetHashCode 覆盖相关的问题,但其中大多数似乎是针对特定情况和特定问题的。所以,因此我想在这里得到一个很好的编译。包含一般建议和指南的概述。做什么,不做什么,常见的陷阱,从哪里开始等等。

我希望它特别针对 C#,但我认为它对其他 .NET 语言的工作方式也是一样的(?)。


我认为最好的方法可能是为每个主题创建一个答案,首先是一个快速而简短的答案(如果可能的话,接近单行),然后可能是更多的信息,并以相关的问题、讨论、博客文章等结束。 ,如果有的话。然后,我可以创建一个帖子作为接受的答案(将其放在首位),只需一个“目录”。尽量保持简短和简洁。不要只链接到其他问题和博客文章。尝试获取它们的本质,然后链接到源(特别是因为源可能会消失。另外,请尝试编辑和改进答案,而不是创建许多非常相似的答案。

我不是一个很好的技术作家,但我至少会尝试格式化答案,使它们看起来相似,创建目录等。我还将尝试在 SO 上搜索一些相关问题,以回答部分问题这些,也许会提取出我可以管理的那些精髓。但由于我在这个话题上不是很稳定,我会尽量远离:p

0 投票
7 回答
14792 浏览

java - 哈希码唯一性

是否有可能两个实例Object具有相同的hashCode()

理论上一个对象hashCode是从它的内存地址派生的,所以所有的都hashCodes应该是唯一的,但是如果在 GC 期间对象被移动了怎么办?

0 投票
4 回答
673 浏览

java - 如何找到哈希码的有效性?

在我们的应用程序中,我们从 java 对象生成哈希码并将其存储在数据库中的某个级别。现在我的问题是,如果有人手动生成一个数字,有没有办法我可以找出它是否是由 JVM 从对象创建的有效哈希码,而不是手动创建的。

0 投票
9 回答
25782 浏览

java - 使用 hashCode() 测试字符串相等性

是否有任何理由无法使用它的 hashCode 方法测试 Java 字符串的相等性?所以基本上,而不是......

你可以用...

这将很有用,因为一旦一个字符串计算出它的哈希码,那么比较一个字符串将与比较一个 int 一样有效,因为字符串缓存了哈希码,而且很可能无论如何该字符串都在字符串池中,如果你设计它方式。

0 投票
1 回答
723 浏览

.net - HttpRequest.GetHashCode() 实现 - 冲突多久发生一次?

我试图找到一种可靠的方法来唯一地识别和跟踪 ASP.NET 网站中的不同 HttpRequest。

有人知道 HttpRequest.GetHashCode() 的实现吗?具体来说,碰撞发生的频率如何?

我了解 HashCodes 不保证是唯一的。我想了解的是统计上我可以期望 HashCode 重复自身的频率。

我想到的系统会优雅地处理 HashCode 冲突,但我想确保它们至少与千分之一左右一样唯一。

0 投票
4 回答
15347 浏览

java - Java - TreeSet 和 hashCode()

我有一个关于TreeSet集合和hashCode方法的快速问题。我有一个TreeSet并且我正在向它添加对象,在添加对象之前,我检查它是否存在于TreeSetusingcontains方法中。

我有 2 个不同的对象,每个对象都使用我的 hashCode 方法实现产生一个不同的 hashCode,示例如下:

特定运行的哈希码是:76126352 和 76126353(对象在一个属性中仅相差一位)。

对于这些对象, contains 方法返回 true,即使 hashCode 不同。任何想法为什么?这真的很令人困惑,我们将不胜感激。

0 投票
1 回答
1976 浏览

scala - 覆盖在 Scala 中实现的 JavaBeans 的 equals 和 hashCode 方法

我正在使用 iBatis 和 Java 缓存工具 ehcache 开发一个项目,但我正在 Scala 中实现模型类。我有一种强烈的感觉,我必须重写 equals 和 hashCode 方法以使缓存能够轻松管理其上的对象。

由于 scala 类中的大多数必需属性都是 vars,因此我需要有关创建依赖于 vars 和有效的对象比较的有效等于定义的建议。

代码示例将不胜感激。

谢谢。

0 投票
5 回答
75649 浏览

java - 在 HashMap 中使用 String 键的坏主意?

我知道 String 类的hashCode()方法不能保证为不同的 String-s 生成唯一的哈希码。我看到很多将 String 键放入 HashMap-s 的用法(使用默认的 String hashCode() 方法)。如果映射put替换了之前使用真正不同的字符串键放入映射的 HashMap 条目,则很多这种用法可能会导致严重的应用程序问题。

您遇到 String.hashCode() 为不同的 String-s 返回相同值的情况的几率是多少?当键是字符串时,开发人员如何解决这个问题?