【发布时间】:2016-01-29 22:39:02
【问题描述】:
我在想哈希码只在 HashMap、Hashtable 中实现。据我了解,hashCode 值在对象级别上也是相同的。 因此
String str="Niks";
String str1=new String("Niks");
System.out.println(str.hashCode());
System.out.println(str1.hashCode());
返回相同的代码是因为在对象级别上,哈希码将按如下方式实现。如果我错了,请纠正我。
result = prime * result + ((str == null) ? 0 : str.hashCode());
result2 = prime * result + ((str1 == null) ? 0 : str1.hashCode());
输出:
75268767 75268767
【问题讨论】:
-
我认为您误解了平等和身份之间的区别,并且哈希码仅与平等有关。
-
@wero:我认为建议的重复问题不适用。提议的副本描述了如何允许重复的哈希码值,而我认为 OP 没有得到基于值的相等性。
标签: java