我的简单 java 代码如下所示:String s1 = "FB";String s2 = "Ea";System.out.println(s1.hashCode() == s2.hashCode()); // trueMap<String, Integer> map = new HashMap<>();map.put(s1, 1);map.put(s2, 2);虽然调试这段代码在IntelliJIdea,我不能看到HashMap的数据结构中创建的链接列表,另外,还创建了两个桶,而不是一个虽然哈希码是相同的s1和s2。能否请您澄清一下?
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
默认情况下,IDEA 具有简化的地图视图。要查看Right click
地图对象上需要的所有内部字段,然后View as
-> Object
,然后对HashMap$Node
对象执行相同操作。
关于table
大小,它默认有 16 个桶:
java.util.HashMap#DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
holdtom
TA贡献1805条经验 获得超10个赞
你需要做三件事。这不是直截了当的,我花了一段时间才弄明白,因为以前没有人回答过。
如果选中该值,则需要取消选中该值。要打开该窗口,您需要在调试器内右键单击,然后选择“自定义数据视图...”
现在您应该在该表中看到一个列表。
其次,您需要右键单击要查看其上的下一个节点的节点,然后选择“新类级别监视”
右键单击该节点并选择 putMapEntries();
如您所见,FB 的下一个值是 Ea
我希望这有帮助。
添加回答
举报
0/150
提交
取消