Java 中的hashcode到底是什么啊?怎样判断两个元素或者对象的hashcode是否就相同了 50

Java中的hashcode到底是什么啊?怎样判断两个元素或者对象的hashcode是否就相同了?hashcode和一个对象的堆内存地址有关系吗?... Java 中的hashcode到底是什么啊?怎样判断两个元素或者对象的hashcode是否就相同了?hashcode和一个对象的堆内存地址有关系吗? 展开
 我来答
旅游的甲鱼
推荐于2017-12-16 · TA获得超过120个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:152万
展开全部

问题一:贴一段java api里介绍hashCode的话。public int hashCode()

返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。

hashCode 的常规协定是:

在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行
equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。

如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用
hashCode 方法都必须生成相同的整数结果。

如果根据 equals(java.lang.Object)
方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不
要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。

实际上,由 Object 类定义的 hashCode
方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)


问题2:判断两个元素对象的hashcode是否相同?一般来说a==b的话,他们的hashcode就相同了。hashcode也可以你自己定义

	a为该类非静态变量
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + a;
return result;
}

你可以让hashCode()这个方法的值一直返回0或者返回1,只要你乐意。

问题3:没啥关系,当然对hash表寻址来说的话有关系。

Vampire_Nik_
2015-05-13 · TA获得超过291个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:144万
展开全部
首先equals()和hashcode()这两个方法都是从object类中继承过来的。 , .hashcode(""); 和 eq 使用方法一样, 都是比较值。和 == 号不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mitasplace
2015-05-13 · 超过11用户采纳过TA的回答
知道答主
回答量:113
采纳率:100%
帮助的人:17.5万
展开全部
对的。 因为我们可以重写“顶级父类Object类的hashCode方法”来实现自己的hashCode。 所以说 java中两个对象值相同,hashCode可以不同, 或者说 值不同,hashCode相同 也可以值和hashCode都相同。 因为我们可以自...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式