hashcode相关内容
使用可变对象作为Hashmap键是不好的做法吗?如果您尝试使用已修改足以更改其哈希码的密钥从Hashmap中检索值,会发生什么情况?例如,给定 class Key { int a; //可变字段 int b; //可变字段 public int hashcode() return foo(a,b); } 包含代码 HashMap
..
我们如何确定集合的最佳实现(code> hashCode()方法(假设equals方法已被正确覆盖)? 解决方案 最佳实施?这是一个很难回答的问题,因为它取决于使用模式。 几乎所有情况下,合理的良好实现都在 Josh Bloch 的项目8(第二版)中的 有效Java 。最好的办法是在那里查找,因为作者解释了为什么这种方法很好。 短版 创建 int结果并指定一个非零值值。
..
是否有任何方法在Java中生成一个字符串的MD5散列? 解决方案 java.security.MessageDigest 是你的朋友。致电 getInstance(“MD5”) 以获得您可以使用的MD5消息摘要。
..
我在Google App Engine中有一个应用程序正常工作。我意识到,我忘了实现equals和hashCode(我需要使用集合中的对象)的JDO增强对象。所以我做了。我在这些实现中并没有做任何特别的事情,实际上我只是使用Eclipse来生成它们。像这样: @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDEN
..
我经常听说这些方法( Object.hashCode 和 System.identityHashCode )返回地址对象,或从地址中快速计算出来的东西;但我也很确定垃圾收集器移动并压缩对象。由于哈希码不能改变,所以会出现问题。我知道这不是日常工作中需要知道的,但我想了解内部。那么,有没有人知道这是如何在Java中实现的?或.NET,因为它们可能是相似的。 解决方案 .NET的实现是故意不发
..
我有一个带有 float 字段的类。例如: public class MultipleFields { final int count; final float floatValue; public MultipleFields(int count,float floatValue){ this.count = count; this.floatValue = floa
..
众所周知,用==比较浮点数通常是一个错误。在我写的一个3D向量类(带有浮点部分X,Y,Z)中,如果两个向量的距离被认为是零,那么两个向量被认为是相等的。 return false; code> public override bool Equals(object obj) { if(obj == null) $( ) if(GetType()!= obj.GetType()){
..
问题的标题全部说明了。我一直在研究SHA-1,大多数地方我看到它是40 Hex字符长,对我来说是640bit。它不能被代表只有10位十六进制字符160位= 20字节。一个十六进制字符可以代表2个字节吗?为什么它需要两倍?我在理解中缺少什么 如果使用Base32或Base36,SHA-1是不是只有5个或更少的字符? 解决方案 一个十六进制字符只能表示16个不同的值,即4位。 (16 =
..
在这里我已经阅读了几个有关哈希码实现的答案和使用XOR运算符的建议。 (例如为什么XOR经常在java hashCode()中使用,但是另一个按位运算符很少使用?)。 当我使用Eclipse生成哈希码函数时,其中字段是一个对象, timestamp 一长,输出为: public int hashCode(){ final int prime = 31; int result =
..
建议有时需要表示值(值类)的类覆盖 hashCode(), equals() [和可选的 toString()]方法。 这些方法返回的值取决于类的所有成员变量或其子类的超类。要正确实现它们,你必须了解一些关于哈希哈希的理论和一点代数和集合理论(不是太多,几乎所有的东西都在解释在 javadocs 在大多数情况下,这种方法的实现遵循一个模板,IDE(如Eclipse JDT)包括生成它们的工
..
我正在实现一个可重用的DoubleEqualityComparer(具有自定义容差:“epsilon”构造函数参数),以缓解LINQ的使用顺序为双倍。例如: bool myDoubleFound = doubles.Contains(myDouble,new DoubleEqualityComparer(epsilon:0.01)); 实现GetHashCode的正确方法
..
我想知道如何在Java中哈希一个双引号?我已经混合了其他原始数据和对象。我以为可以使用hashcode方法?从我看过的这个看起来相当复杂。我遇到了一些关于创造种子的事情。 我想知道有关如何解决这个问题的任何想法。希望放弃我的哈希码的其余部分,这个类有两个? 我想知道是否有问题,我试图排列数组列表,数组和其他java中的对象我的一些类包含数组列表。 非常感谢 解决方案 a
..
我有以下对象,如果有重复,我想要一个字典有条件地确定。例如,在一本字典中,我只关心两个属性对于我的密钥是唯一的。在第二个字典中,我希望所有的属性都是唯一的密钥。 问题1: 我应该覆盖什么接口来完成这个? (例如GetHashCode,IEqualityComparer,equals运算符) 问题2: 如果我更改最终更改键值的属性,我该怎么办?如果我做一个字典,这可能更有用,
..
将对象添加到.NET System.Collections.Generic.Dictionary 类的密钥的哈希码在内部存储并用于以后的比较。当哈希码在初始插入字典之后变化时,通常会变得“不可访问”,并且即使使用相同的引用返回false(存在下面的示例代码),存在检查也可能使用户感到惊讶。 GetHashCode 文档说: 只要对确定返回的对象状态没有修改,对象的GetHashCode
..
我知道String类' hashCode()方法是不保证为不同的String-s生成唯一的哈希码。我看到很多使用将String键放入HashMap-s(使用默认的String hashCode()方法)。如果地图 put 将以前放置到地图上的HashMap条目与真正不同的字符串关键字置换,很多此类用法可能会导致重大的应用程序问题。 在String.hashCode()返回不同的String-
..
我想知道Java如何在 Map ( HashMap 或 Hashtable )。密钥是由哈希码,内存引用或分配优先级排序的吗?? 这是因为我在地图中注意到相同的对并不总是相同的顺序 解决方案 java.util.HashMap 是无序的;你不能也不应该承担任何事情。 这个类不能保证地图的顺序;特别是,它不能保证订单在一段时间内保持不变。 java.util.LinkedH
..
实现 __ hash __()? 我正在谈论的功能是什么?返回一个哈希码,然后用于将对象插入散列哈希表字典中。 As __ hash __()返回一个整数并且用于将对象“binning”到散列表中我假定返回的整数的值应该为普通数据均匀分布(以最小化冲突)。 得到这样的价值是什么好习惯?碰撞有问题吗? 在我的情况下,我有一个小类,作为一个容器类,它持有一些int,一些浮点和一个字符串
..
通过trie map我的意思是一个关联数组,其中有效负载存储在特里中,而不是哈希表。 当我使用散列图/表时,我使用的键通常是字符串。一些基于地图的地图上的哈希映射有什么优点?我已经读到一个哈希映射更快 - 但是在我看来,一致的哈希函数将必须检查(char)数组的每个元素的最终哈希 - 迭代数组一次。在一个特里,你将同样必须遍历数组一次。 在我看来,当编码小对象时,这会使用更多的内存(即
..
对于键[0]的随机int值,它在多大程度上获得与下面的函数的HashCode冲突],键[1],键[2],键[3] 带有以下约束的随机键值 键[0]
..
我被要求在内存中查找一百万个均匀分布的整数。 我的工作负载非常仔细。 我目前的实现使用了一个HashSet(Java)。我看到很好的查找性能,但内存使用情况并不理想(几十MB)。 你能想到一个更有效(内存)的数据结构吗? > 编辑:解决方案需要支持少量的数据结构添加。 背景: / strong> 上面提到的整数问题是简化以下问题: 我有一套一百万个字符串(我的“字
..