【发布时间】:2015-01-14 10:22:04
【问题描述】:
我正在研究散列,更具体地说是 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感兴趣?您想将地图本身用作另一个地图中的键(这可能是个坏主意)?
-
仅供学习使用:)
-
看看 HashMap 如何调用其项目的哈希码方法将它们放入正确的存储桶中可能会更有趣。 HashMap 的哈希码本质上是其项的哈希码的组合,但不是 HashMap 本身的哈希策略的一部分,如果你关注我的话。
-
非常感谢。我想我可以跟着你