问题标签 [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.
java - Java,Object.hashCode() 跨所有 JVM/系统的结果常量?
同一个对象的所有 JVM 实现的输出是否Object.hashCode()
需要相同?
例如,如果在 1.4 上"test".hashCode()
返回1
,它可能会2
在 1.6 上返回运行。或者如果操作系统不同,或者实例之间有不同的处理器架构怎么办?
c# - GetHashCode 问题
任何人都可以帮助解释以下内容。我遇到了一个字典问题,当对象和对象都成功时,它的ContainsKey
评估结果为假。下面是 Visual Studio 中即时窗口的输出:Equals
GetHashCode
我错过了什么吗?任何想法都非常感谢。
c# - .Net 哈希码不再持久?
我有一个 API,其中各种类型都有自定义哈希码。这些散列码基于获取相关对象的字符串表示的散列。使用了各种加盐技术,以使哈希码尽可能不发生冲突,并且具有等效字符串表示的不同类型的对象具有不同的哈希码。
显然,由于哈希码是基于字符串的,因此存在一些冲突(无限字符串与 32 位整数的有限范围)。我使用基于字符串表示的散列,因为我需要散列在会话中持续存在,特别是在对象的数据库存储中使用。
今天突然间,我的代码开始为破坏各种事物的对象生成不同的哈希码。它今天早些时候工作,我还没有触及任何涉及哈希码生成的代码。
我知道 .Net 文档允许在 .Net 框架版本之间(以及 32 位和 64 位版本之间)实现哈希码,但我没有更改框架版本,并且最近没有框架更新我记得
任何想法,因为这看起来真的很奇怪?
编辑
哈希码生成如下:
java - ConcurrentHashMap 构造函数参数?
我想知道构造 a 的参数ConcurrentHashMap
:
initialCapacity
默认为 16(可以理解)。loadFactor
默认为 0.75。concurrencyLevel
默认为 16。
我的问题是:
- 应该使用什么标准来
loadFactor
向上或向下调整? - 我们如何确定并发更新线程的数量?
- 应该使用什么标准来
concurrencyLevel
向上或向下调整?
此外:
- 一个好的哈希码实现的标志是什么?(如果一个 SO 问题解决了这个问题,只需链接到它。)
谢谢!
java - Java:如何确保根据 List 上的值存储唯一数组
我有许多 Object[] 的一维数组(如果有帮助,这些对象是原始类型)
我想将这些数组存储在一个列表中,但只有其内容与其他数组不同的数组。
我的第一个近似值是遍历存储在 Set 中的数组 Arrays.hashCode(array) 的值,并且如果该值未包含在集合中,则仅将数组存储在所需的列表中。
但后来我意识到两个具有不同内容的数组可以产生相同的哈希码(我希望不经常)
谁能帮忙?
我可以期待非常频繁的哈希码冲突(来自不同内容的相同哈希码)吗?
java - 使用JPA和Hibernate时equals和hashcode应该如何实现
模型类的equals和hashcode应该如何在Hibernate中实现?常见的陷阱有哪些?对于大多数情况,默认实现是否足够好?使用业务密钥有什么意义吗?
在我看来,当考虑到延迟获取、id 生成、代理等时,很难让它在每种情况下都能正常工作。
java - Google App Engine、JDO 和 equals/hashCode
我在 Google App Engine 中有一个运行良好的应用程序。我意识到我忘记实现 equals 和 hashCode 的一个 JDO 增强对象(我需要在一组中使用该对象)。所以我做了。在这些实现中我并没有真正做任何特别的事情,实际上我只是使用 Eclipse 来生成它们。像这样:
所以现在,当我尝试点击应用程序中的任何 URL 时,会抛出此异常:
/addUser javax.jdo.JDOUserException:持久类“类 com.bpapa.myapp.domain.User 似乎没有得到增强。您可能需要重新运行增强器并检查输出中的错误。” 数据库中没有表,但操作需要它。请检查该类的元数据规范。在 org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:427) 在 org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:249) 在 com.bpapa.myapp.servlet.AddUserServlet.doPost(AddUserServlet.java :34)
关于我做错了什么有什么想法吗?
c# - 快速简单的哈希码组合
人们可以推荐快速简单的方法来组合两个对象的哈希码。我不太担心冲突,因为我有一个可以有效处理冲突的哈希表,我只想要尽快生成代码的东西。
阅读 SO 和网络似乎有几个主要的候选人:
- 异或
- 与素数乘法异或
- 简单的数字运算,例如乘法/除法(带有溢出检查或环绕)
- 构建一个字符串,然后使用字符串类的哈希码方法
人们会推荐什么,为什么?
algorithm - 将相似输入映射到相似输出的哈希函数?
是否存在散列函数,其中输入的微小变化会导致输出的微小变化?例如,类似:
.net - GC 移动对象时 Object.GetHashCode 是如何工作的?
如果我理解正确,在 .NET 中,默认实现会Object.GetHashCode()
根据对象的内存地址返回一个值(至少对于引用类型而言)。但是,垃圾收集器可以自由地在内存中移动对象。大概哈希码不会仅仅因为 GC 移动一个对象而改变,那么这种交互是否有特殊处理,或者我的假设是错误的?