草庐IT

HashCode

全部标签

java - 哈希码与 SHA-1

我想比较一些代表树的大对象并缓存某物以避免每次将新对象与一个已经存在的对象进行比较...问题是最好的东西是什么?(性能和碰撞之间的折衷...)。一方面,我有一个基于各个字段值的常规hashCode函数(遵循effectiveJava的第3章。但我无法评估这种方法带来的潜在冲突。另一方面,我使用标准java发行版中的MessageDigest方法和SHA-1算法。我认为它不会有效率,但我可能会减少碰撞。我对吗?在我的上下文中这是正确的解决方案还是我完全错了?问题是我不知道对象的大小。另请注意,计算出的值不会在哈希表中使用。谢谢... 最佳答案

java - 有hashCode()为什么Java还需要equals()?

如果两个对象返回相同的hashCode,不就说明它们相等吗?或者我们需要equals来防止碰撞?我可以通过比较hashCode来实现equals吗? 最佳答案 如果两个对象具有相同的hashCode,则它们不一定相等。否则你会发现完美的散列函数。但恰恰相反——如果对象相等,则它们必须具有相同的hashCode。 关于java-有hashCode()为什么Java还需要equals()?,我们在StackOverflow上找到一个类似的问题: https://s

java - 尽管 hashCode() 和 equals() 为真,但 HashMap containsKey() 返回假

我有一个HashMap称为vertexIndexes.如果我用这段代码遍历它:publicbooleansearch(StringvertexName){for(Vertexname:vertexIndexes.keySet()){Stringkey=name.toString();Stringvalue=vertexIndexes.get(name).toString();System.out.println(key+""+value+""+(name.hashCode()==vertexName.hashCode())+""+name.equals(vertexName));}..

java - Object 类是如何实现的(hashCode 和内部字段等方法)?

我很好奇Object类是如何实现的。例如方法hashCode()或wait()如何表示内部状态。例如,用于存储调用对象的wait()的线程的内部锁或数据结构。为了找到这些,我下载了OpenJDK的源代码并开始挖掘。首先,我遇到的是\openjdksrc\jdk\src\share\native\java\lang\Object.c文件,其中包括:staticJNINativeMethodmethods[]={{"hashCode","()I",(void*)&JVM_IHashCode},{"wait","(J)V",(void*)&JVM_MonitorWait},{"notify"

java - 验证以查看表单是否已更改

我正在编写一个validator,它需要测试spring表单对象是否已更改。在validator中,如果没有对表单进行任何更改,则应显示错误。是否有Spring机制来做到这一点?这是因为我在提交时进行了一次非常昂贵的网络服务更新调用,如果没有进行任何更改,我需要阻止进行网络服务调用。干杯。 最佳答案 我不知道有任何内置的Spring机制可以处理这个问题。我会保存原始对象和修改后对象的副本。我会适本地覆盖Form.equals()方法(如果所有字段都是基元/字符串,可能委托(delegate)给org.apache.commons.l

java - 为什么 Java 不支持比较器行的相等性比较?

Java提供了使用Comparator定义对象范围外对象比较的方法。现在我的问题是为什么java不允许对equals()和hashcode()做同样的事情。现在每个集合contains()方法都可以轻松地使用这个外部相等提供程序来检查对象是否相等。 最佳答案 Guava有Equivalence类,它几乎可以满足您的要求。您甚至可以将对象包装在Equivalence中,以使用更好的hashCode()equals()实现来装饰对象(例如,如果您想使用具有错误equals()hashCode()作为映射键但无权访问源)这是一个示例:数组

java - Nashorn,Java 集合,如何在纯 javascript 中实现 equals 和 hashCode

我遇到了以下问题。我想在Nashorn脚本中使用java.util.HashMap和java.util.PriorityQueue,我需要在其中使用特定的自定义对象作为HashMap中的键,并使用HashMap.containsKey()检查Map中是否有键(另一种选择是检查对象是否在Collection.contains(Objecto)).因此,显然,我需要根据某些字段值在我的对象中实现equals和hashCode。例如:尝试使用JavaScript。不起作用,因为JavaScript没有这些方法。请参阅示例1和示例2扩展java.lang.Object。示例3。部分工作,正在调

java - Java 中多重集的高效哈希码

我已经定义了一个java.util.Collection的子接口(interface),它实际上是一个多重集(又名包)。它可能不包含null元素,尽管这对我的问题并不重要。接口(interface)定义的equals契约如您所料:objinstanceofMyInterfaceobj包含与this相同的元素(通过equals)obj包含每个元素相同数量的重复项忽略元素的顺序现在我想编写我的hashCode方法。我最初的想法是:inthashCode=1;for(Objecto:this){hashCode+=o.hashCode();}但是,我注意到com.google.common.

java - TreeSet内部使用了TreeMap,那么使用Treeset时是否需要实现Hashcode方法呢?

我想知道javadocsforTreeSet说是什么意思ThisclassimplementstheSetinterface,backedbyaTreeMapinstance?在下面的示例中,我没有实现Hashcode方法,但它仍然按预期工作,即它能够对对象进行排序。请注意,我故意没有实现一致的Equals实现来检查TreeSet行为。importjava.util.TreeSet;publicclassComparisonLogicimplementsComparable{Stringfield1;Stringfield2;publicStringtoString(){returnf

java - 如何有意义地为 java.lang.Class<T> 定义 hashCode 和 equals?

如果需要使用Class作为Map的key的一部分定义hashCode的正确方法是什么?和equals?Class从Object继承了那些它检查引用相等性并将内存地址作为哈希码返回,但在我看来,尚不清楚equals的有意义定义是什么和hashCodeClass的定义.我应该使用theClass.getClass().hashCode();吗?例如(我们有ClasstheClass;)使用实际实例的方法?但这似乎不是正确的做法。例如在javadoc对于Class:EveryarrayalsobelongstoaclassthatisreflectedasaClassobjectthatis