HashMap的方法hashCode及其作用
HashMap's method hashCode and it's effects
我正在研究散列,更具体地说是 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。
这是如何计算的,或者如果没有 运行 我怎么知道它会打印出什么?
提前致谢!
HashMap 的hashCode
是映射中条目的函数,但是像你这样调用map.hashCode()
没有太大意义。
HashMap
class对hashCode
方法的主要用途是确定在HashMap
的哪个bucket中存储和查找一个key。这是通过在 HashMap
.
中为您 putting/searching 的密钥调用 hashCode
来完成的
顺便说一句,这是您在地图中输入的条目的 hashCode
的计算结果:
- HashMap的
hashCode
是hashCode
项的总和。
Entry
的 hashCode
是键的 hashCode
XOR 值的 hashCode
。
- Integer的
hashCode
是int值。
第一次测试:
4^4 + 5^4 = 0 + 1 = 1;
第二次测试:
2^5 + 7^4 = 7 + 3 = 10;
我正在研究散列,更具体地说是 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。
这是如何计算的,或者如果没有 运行 我怎么知道它会打印出什么?
提前致谢!
HashMap 的hashCode
是映射中条目的函数,但是像你这样调用map.hashCode()
没有太大意义。
HashMap
class对hashCode
方法的主要用途是确定在HashMap
的哪个bucket中存储和查找一个key。这是通过在 HashMap
.
hashCode
来完成的
顺便说一句,这是您在地图中输入的条目的 hashCode
的计算结果:
- HashMap的
hashCode
是hashCode
项的总和。 Entry
的hashCode
是键的hashCode
XOR 值的hashCode
。- Integer的
hashCode
是int值。
第一次测试:
4^4 + 5^4 = 0 + 1 = 1;
第二次测试:
2^5 + 7^4 = 7 + 3 = 10;