我正在寻找哈希,更具体地说是hashMap。我不理解hashCode()方法,并且真的希望有人为我清除它。我为了一点点测试,编写了这段代码:
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(4,4);
map.put(5,4);
System.out.println(map.hashCode());
这里的输出是1.但是当我改变它时有点像这样:
map.put(2,5);
map.put(7,4);
输出为10.
如何计算,或者如何在不运行打印出来的情况下知道?
提前致谢!
答案 0 :(得分:0)
HashMap的hashCode
是地图中条目的函数,但是调用map.hashCode()
并没有多大意义。
hashCode
类的HashMap
方法的主要用途是确定应该存储和搜索HashMap
密钥的哪个桶。这是通过在hashCode
中为您要放置/搜索的密钥调用HashMap
来完成的。
顺便说一句,这是您在地图中输入的条目hashCode
的计算:
hashCode
是条目hashCode
的总和。 hashCode
的{{1}}是关键字XOR Entry
的值hashCode
。 hashCode
是int值。第一次测试:
hashCode
第二次测试:
4^4 + 5^4 = 0 + 1 = 1;