草庐IT

hashCodes

全部标签

c# - 如何在 .net (c#) 中为可安全存储在数据库中的字符串创建 HashCode?

引自GuidelinesandrulesforGetHashCode埃里克·利珀特:Rule:ConsumersofGetHashCodecannotrelyuponitbeingstableovertimeoracrossappdomainsSupposeyouhaveaCustomerobjectthathasabunchoffieldslikeName,Address,andsoon.Ifyoumaketwosuchobjectswithexactlythesamedataintwodifferentprocesses,theydonothavetoreturnthesameha

Java:为了方便起见,在 equals() 中使用 hashCode()?

考虑下面的测试用例,在equals中使用hashCode方法作为一种方便的快捷方式是不是一种不好的做法?publicclassTest{publicstaticvoidmain(String[]args){Testt1=newTest(1,2.0,3,newInteger(4));Testt2=newTest(1,2.0,3,newInteger(4));System.out.println(t1.hashCode()+"\r\n"+t2.hashCode());System.out.println("t1.equals(t2)?"+t1.equals(t2));}privateint

java - 自动检查equals、hashCode和compareTo一致性的技术?

我很清楚契约(Contract)需要确保hashCode与equals一致,并且equals与一致>比较。但是,这是oftenviolatedinpractice.是否有任何工具、技术或库可以自动测试这种一致性?不幸的是,我怀疑答案是否定的,但如果能够对这种可以利用库调用或框架的东西进行单元测试而不需要编写自定义测试,那将很有用在重要的情况下手动处理。如果不清楚我所说的一致性是什么意思,对于hashCode和equals我指的是以下内容:Iftwoobjectsareequalaccordingtotheequals(Object)method,thencallingthehashCo

java - 为什么每次添加新元素时 ArrayList 的 hashCode() 都会发生变化?

根据我对ArrayList的理解,默认容量是10,当超过10时,它会创建一个新的对象,以新的容量等等..所以出于好奇,我输入了以下程序来检查hashcode()中的ArrayList对象:publicclassTestCoreJava{publicstaticvoidmain(String[]args){ArrayListal=newArrayList();for(inti=0;i根据上述情况,当我没有为ArrayList设置初始容量时,默认值为10。因此,在添加第11个元素时,它将创建一个新对象并增加ArrayList的容量。当我打印ArrayList对象的哈希码时,它每次都会给出一

java - 为什么 Object#hashCode() 返回 int 而不是 long

为什么不:publicnativelonghashCode();代替:publicnativeinthashCode();获得唯一哈希码的机会更高? 最佳答案 因为maximumlengthofanarray是Integer.MAX_VALUE。由于hashCode()的主要用途是确定将对象插入到HashMap/Hashtable的后备数组中的哪个槽中>,哈希码>Integer.MAX_VALUE将无法存储在数组中。 关于java-为什么Object#hashCode()返回int而不是

java - 如果 hashCode() 没有被覆盖,HashSet 允许重复项插入

classtemp{intid;publicintgetId(){returnid;}temp(intid){this.id=id;}publicvoidsetId(intid){this.id=id;}@Overridepublicbooleanequals(Objectobj){if(this==obj)returntrue;if(obj==null)returnfalse;if(getClass()!=obj.getClass())returnfalse;tempother=(temp)obj;if(id!=other.id)returnfalse;returntrue;}}pu

java - 如何确保 hashCode() 与 equals() 一致?

当覆盖java.lang.Object的equals()函数时,javadocs建议,itisgenerallynecessarytooverridethehashCodemethodwheneverthismethodisoverridden,soastomaintainthegeneralcontractforthehashCodemethod,whichstatesthatequalobjectsmusthaveequalhashcodes.hashCode()方法必须为每个对象返回一个唯一整数(这在根据内存位置比较对象时很容易做到,只需返回唯一整数地址对象)应该如何重写hash

java - 使用 hashCode() 测试字符串相等性

有什么理由不能使用它的hashCode方法测试Java字符串的相等性吗?所以基本上,而不是...."hello".equals("hello")你可以使用..."hello".hashCode()=="hello".hashCode()这将很有用,因为一旦一个字符串计算出它的哈希码,那么比较一个字符串将与比较一个int一样有效,因为字符串缓存了哈希码,并且很可能无论如何该字符串都在字符串池中,如果你就是这样设计的。 最佳答案 让我给你一个反例。试试这个,publicstaticvoidmain(String[]args){Strin

java - 为什么Java中的String.hashCode()会有很多冲突?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭9年前。为什么String.hashcode()会有这么多冲突?我正在阅读jdk1.6中的String.hashCode(),下面是代码publicinthashCode(){inth=hash;if(h==0){intoff=offset;charval[]=value;intlen=count;for(inti=0;i这看起来让我很困惑,因为它有很多冲突;

java - 为什么 StringBuffer/StringBuilder 不覆盖 equals 或 hashCode?

为什么StringBuffer/StringBuilder不会覆盖object的equals()、hashcode()方法?请给我建议清晰的图片,以帮助理解问题... 最佳答案 因为StringBuffer是可变的,它的主要用途是构造字符串。如果要比较内容,调用StringBuffer#toString(),比较返回值。对于可变对象覆盖hashCode()通常没有用处,因为修改这样一个在HashMap中用作键的对象可能会导致存储值被“迷失”了。 关于java-为什么StringBuffe