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

Pur*_* CK 3 java intellij-idea

我的简单 java 代码如下所示:

String s1 = "FB";

String s2 = "Ea";

System.out.println(s1.hashCode() == s2.hashCode()); // true

Map<String, Integer> map = new HashMap<>();

map.put(s1, 1);

map.put(s2, 2);
Run Code Online (Sandbox Code Playgroud)

虽然调试这段代码在IntelliJIdea,我不能看到HashMap的数据结构中创建的链接列表,另外,还创建了两个桶,而不是一个虽然哈希码是相同的s1s2。能否请您澄清一下?

小智 8

你需要做三件事。这并不简单,我花了一段时间才弄清楚,因为之前没有人回答过它。

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

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

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

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

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

正如您所看到的,FB 的下一个值是 Ea 正如您所看到的,FB 的下一个值是 Ea

我希望这有帮助。


esi*_*n88 7

默认情况下,IDEA 具有简化的地图视图。要查看Right click地图对象上需要的所有内部字段,然后View as-> Object,然后对HashMap$Node对象执行相同操作。

在此处输入图片说明

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

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

  • @阿尔曼,是的,在“设置” | `构建、执行、部署` | `调试器` | `数据视图` | “Java”,您需要取消选中“启用集合类的替代视图” (2认同)