Long a = 123456L;
int result = Objects.hash(a);
System.out.println(result);
这个a变量和result结果在任何机器上都是一一对应的吗
如何根据a算出result
这个你得看hash底层算法如何实现的了,正常情况下,在任何机器上是一致的
是的。设计hashCode()时最重要的因素就是:无论何时,对同一个对象调用hashCode()都应该产生同样的值。如果一个对象用put()添加进HashMap时产生一个hashCdoe值,而用get()取出时却产生了另一个hashCode值,这是不合理的
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
这个是Long底层计算HashCode的代码:
public static int hashCode(long value) {
return (int)(value ^ (value >>> 32));
}
与机器无关,在哪里执行结果都一样。