为了账号安全,请及时绑定邮箱和手机立即绑定

IntelliJIdea:HashMap 调试窗口未显示与链表相关的完整详细信息

IntelliJIdea:HashMap 调试窗口未显示与链表相关的完整详细信息

开满天机 2021-07-22 10:45:57
我的简单 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对象执行相同操作。

//img1.sycdn.imooc.com//60f92ba90001e51a06760452.jpg

关于table大小,它默认有 16 个桶:

java.util.HashMap#DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16


查看完整回答
反对 回复 2021-07-22
?
holdtom

TA贡献1805条经验 获得超10个赞

你需要做三件事。这不是直截了当的,我花了一段时间才弄明白,因为以前没有人回答过。

如果选中该值,则需要取消选中该值。要打开该窗口,您需要在调试器内右键单击,然后选择“自定义数据视图...”

//img1.sycdn.imooc.com//60f92bbc00015bbb07240721.jpg

现在您应该在该表中看到一个列表。

其次,您需要右键单击要查看其上的下一个节点的节点,然后选择“新类级别监视”

//img1.sycdn.imooc.com//60f92bc90001b1e906120572.jpg

右键单击该节点并选择 putMapEntries();

//img1.sycdn.imooc.com//60f92bd800016a0308120137.jpg

如您所见,FB 的下一个值是 Ea

//img1.sycdn.imooc.com//60f92be600018ed407620554.jpg

我希望这有帮助。


查看完整回答
反对 回复 2021-07-22
  • 2 回答
  • 0 关注
  • 629 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信