草庐IT

hash_equals

全部标签

Java 为两个可互换的整数覆盖 equals() 和 hashcode()

我正在覆盖两个整数的简单容器对象的equals和hashcode方法。每个int都反射(reflect)了另一个对象的索引(该对象是什么并不重要)。类的要点是表示两个对象之间的连接。连接的方向无关紧要,因此equals方法应该返回true,而不管两个int在对象中的方向如何,例如connectionA=newConnection(1,2);connectionB=newConnection(1,3);connectionC=newConnection(2,1);connectionA.equals(connectionB);//returnsfalseconnectionA.equal

java - 尽管同时实现了 hashCode() 和 equals(),但 HashSet 添加了重复条目

我有以下类(class):classPoint{doublex,y;//....constructorandotherfunctionsherepublicbooleanequals(Pointp){if(p==null)return(false);return(x==p.x&&y==p.y);}publicinthashCode(){intresult=17;longc1=Double.doubleToLongBits(x);longc2=Double.doubleToLongBits(y);intci1=(int)(c1^(c1>>>32));intci2=(int)(c2^(c2

java - Hash(#) 在查询字符串中的行为是什么

我正在发送以下带有查询字符串的url。在查询字符串一个参数“approverCmt”具有哈希值(#)。"/abc/efd/xyz.jas?approverCmt=TransactionLog#459505&batchNm=XS_10APR2015_082224&mfrNm=Timberland"在服务器端,当我试图从我收到的请求中检索它时approverCmt=TransactionLog----->"#459505"ismissingbatchNm=nullmfrNm=null如果我从查询字符串中删除散列(#)或者如果我将#替换为%23一切正常我不明白为什么如果另一个参数包含井号(#

java - 在接口(interface)中执行 "equals"

我有一个接口(interface),我希望每个实现这个接口(interface)的人都实现一个重写的“equals”方法。有没有办法确保发生这种情况?我猜这会发生的方式是实现我的接口(interface)的类将自动从Object获取equals,从而使接口(interface)快乐。 最佳答案 不行,你只能创建一个抽象类而不是像这样的接口(interface):publicabstractclassMyApi{publicfinalbooleanequals(Objectother){if(other==this){returntr

java - 为什么 HashSet 的名称中有 "Hash"?

为什么Hashset被称为“哈希”集?我知道我们称之为哈希表或HashMap,因为它是键值存储,当我们put()时,键会被哈希并使用一个好的哈希函数均匀分布。我假设它称为HashSet,因为当我们添加()时,该值被散列并存储以保持其唯一性。但为什么矫枉过正?我们并不真正关心数据的“平均分配”,就像我们在哈希表中所做的那样。 最佳答案 我们确实关心平均分配,因为我们希望我们的基本Collection操作具有恒定的时间性能。为了尊重SET的基本规则,没有两个对象是相等的,我们希望快速找到一个可能相等的匹配项。HashSet是一种相当不错

java - 使用 Mojo Jaxb2 maven 插件创建 Java 类时生成 hashCode() 和 equals()

我正在处理的代码使用org.codehaus.mojo中的jaxb2-maven-plugin从XSD模式生成Java类。我正在寻找一种方法来为这些类自动实现equals()和hashCode()方法,但似乎没有办法。我知道还有其他JAXB2Maven插件可以做到这一点(例如http://confluence.highsource.org/display/J2B/Home),但我想知道你们之前是否遇到过这个问题,是否有办法修复它。我正在使用xjc目标生成类。 最佳答案 你提到的JAXB2Basics不是maven-jaxb2-plu

java - java.util.Arrays 中 equals() 的运行时间是多少?

如标题所述,java.util.Arrays中equals()的运行时间是多少?例如,如果它比较两个int[],它是否循环遍历数组中的每个元素,所以O(n)?对于java中各个类的equals()中的所有equals(),我们可以假设运行时总是O(n)吗?谢谢。 最佳答案 从源码中抓取(源码值100字:P):/***Returnstrueifthetwospecifiedarraysofintsare*equaltooneanother.Twoarraysareconsideredequalifboth*arrayscontaint

Java日历问题: why are these two Dates not equal?

importjava.io.*;publicclasstesting{publicstaticvoidmain(Stringa[])throwsException{Dated1=newDate();Thread.sleep(2000);Dated2=newDate();if(d1.equals(d2)){System.out.println("Bothequal");}else{System.out.println("Bothnotequal");}Calendarc1=Calendar.getInstance();Calendarc2=Calendar.getInstance();c

java - HashSet 'add'方法什么时候调用equals?

这个问题在这里已经有了答案:WhatissuesshouldbeconsideredwhenoverridingequalsandhashCodeinJava?(11个答案)关闭4年前。我在HashSet比较中做了这个测试,equals没有被调用我想在farAway=false时考虑equals(检查两点距离的函数)完整的可编译代码,您可以对其进行测试,并说明为什么在此示例中未调用equals。publicclassTestClass{staticclassPosicion{privateintx;privateinty;@Overridepublicbooleanequals(Obj

java - 对 Java 字符串使用 '==' 而不是 .equals

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whatmakesreferencecomparison(==)workforsomestringsinJava?我知道这是askedbefore,但尽管建议使用.equals()而不是==比较运算符,我发现==一直有效:Strings1="Hello";Strings2="Hello";System.out.println(s1==s2);//true谁能给我一个==运算符失败的例子?