草庐IT

hashCodes

全部标签

Java:调用 hashCode() 和 equals() 时自动抛出 UnsupportedOperationException 的干净方法?

我们有一个OO代码库,在很多情况下hashcode()和equals()根本行不通,主要是以下原因:Thereisnowaytoextendaninstantiableclassandaddavaluecomponentwhilepreservingtheequalscontract,unlessyouarewillingtoforgothebenefitsofobject-orientedabstraction.这是来自JoshuaBloch的“EffectiveJava”的引述,这里有一篇很棒的Artima文章中有更多关于这个主题的内容:http://www.artima.com/

java - 为什么不允许外部接口(interface)为 HashMap 提供 hashCode/equals?

使用TreeMap提供自定义Comparator是微不足道的,从而覆盖添加到map的Comparable对象提供的语义。但是HashMap不能以这种方式控制;提供散列值和相等性检查的函数不能“旁加载”。我怀疑设计一个接口(interface)并将其改造为HashMap(或一个新类)会既简单又有用吗?像这样,除了更好的名字:interfaceHasharator{intalternativeHashCode(Tt);booleanalternativeEquals(Tt1,Tt2);}classHasharatorMap{HasharatorMap(Hasharatorhasharato

java - 是否应该在 equals 和 hashCode 中考虑 JPA 实体的 id 字段?

我在使用JPA2和EclipseLink为数据库应用程序编写测试时遇到问题:我将一些实体添加到数据库中,稍后检索它,并想将它与具有我期望的值的实例进行比较,以确认添加是否按我预期的方式工作。首先我写了类似的东西assertEquals(expResult,dbResult);失败了,因为我真的不知道id的值字段,由数据库生成,因此dbResult不同于expResult我用new创建的并手动填充。我看到两个选项:或者我删除id来自equals的字段和hashCode因此比较仅基于“实际值”。不过,我不知道这是否会导致数据库或其他地方出现问题。或者我编写测试以明确检查除id之外的每个字段

java - 为什么Java中不同对象的hashCode()可以返回相同的值?

摘self正在阅读的书HeadFirstJava:Thepointisthathashcodescanbethesamewithoutnecessarilyguaranteeingthattheobjectsareequal,becausethe"hashingalgorithm"usedinthehashCode()methodmighthappentoreturnthesamevalueformultipleobjects.为什么hashCode()方法可能会为不同的对象返回相同的值?这不会引起问题吗? 最佳答案 散列一个对象意

java - 如何为特定类编写 hashCode 方法?

我正在尝试为我的简单类生成一个hashCode()方法,但我没有得到任何结果。我将不胜感激任何帮助。我已经实现了equals()方法,如下所示,我还想知道是否需要实现compareTo()方法。我已经导入了java.lang.Character以使用character.hashCode()但它似乎不起作用。privateclassCoord{privatecharrow;privatecharcol;publicCoord(charx,chary){row=x;col=y;}publicCoord(){};publicchargetX(){returnrow;}publiccharge

java - java的hashCode()方法是如何工作的?

很好奇java是如何通过hashCode()生成hash值的对象API的方法? 最佳答案 Object的hashCode()其实是一个native方法,实现其实不是纯Java。现在,关于它是如何工作的,thisanswerfromTomHawtin很好地解释了它:ManypeoplewillclaimthatObject.hashCodewillreturntheaddressoftheobjectrepresentationinmemory.Inmodernimplementationsobjectsactuallymovewit

Java:自动 equals() 和 hashCode()

为简单数据POJO实现equals()和hashCode()使我的代码困惑,维护也很乏味。自动处理此问题的库是什么?由于性能原因,我更喜欢字节码检测而不是AOP方法。更新:关于实现equals()和hashCode()的必要性的话题已经讨论过了,这里是我的观点:用最少的努力提前完成它,而不是挖掘代码,在涉及到它时添加hC/eq不是更好吗?Edit2022:我已经切换到Kotlin。Kotlin处理大部分Java样板文件,请参阅此页面了解equals()的情况:https://tedblob.com/kotlin-data-class/ 最佳答案

Java - TreeSet 和 hashCode()

我有一个关于TreeSet的快速问题Collection和hashCode方法。我有一个TreeSet并向其添加对象,在添加对象之前,我使用contains检查它是否存在于TreeSet中方法。我有2个不同的对象,每个对象都使用我对hashCode方法的实现生成不同的hashCode,示例如下:publicinthashCode(){inthash=7;hash=hash*31+anAttribute.hashCode();hash=hash*31+anotherAttribute.hashCode();hash=hash*31+yetAnotherAttribute.hashCode

javascript - 在 python 和 node.js 中复制 java.lang.String.hashCode() 输出的函数

我正在尝试实现一个函数来生成在node.js和python中等效的javahashCode以实现redis分片。我正在关注非常好的博客@below提到的链接来实现这一点http://mechanics.flite.com/blog/2013/06/27/sharding-redis/但是如果字符串包含一些不是ascii的字符,我就会卡在hashCode的差异上,如下例所示。对于常规字符串,我可以获得node.js和python给我相同的哈希码。这是我用来生成这个的代码:--pythondef_java_hashcode(s):hash_code=0forcharins:hash_cod

c# - 在 Dictionary 与 HashCode 和 Equals() 中使用 IEqualityComparer 的效率

我觉得标题很清楚。我想知道使用IEqualityComparer时是否有一定的效率开销在Dictionary提供一个时它是如何工作的?谢谢 最佳答案 它更快吗?从游戏开发者的角度来看,如果您的键是值类型(结构、原语、枚举等),则提供您自己的EqualityComparer明显更快-因为EqualityComparer.Default将值框起来。作为一个真实的例子,ManagedDirectX广告牌示例曾经以大约C++版本速度的30%运行;所有其他样本的运行速度约为90%。这样做的原因是广告牌是使用默认比较器排序的(因此被装箱),因为