Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJIdea:HashMap调试窗口不';不显示与链表相关的全部详细信息_Java_Intellij Idea - Fatal编程技术网

Java IntelliJIdea:HashMap调试窗口不';不显示与链表相关的全部详细信息

Java IntelliJIdea:HashMap调试窗口不';不显示与链表相关的全部详细信息,java,intellij-idea,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); String s1=“FB”; 字符串s2=“Ea”; System.out.print

我的简单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);
String s1=“FB”;
字符串s2=“Ea”;
System.out.println(s1.hashCode()==s2.hashCode());//真的
Map Map=newhashmap();
图.put(s1,1);
地图放置(s2,2);

在IntelliJIdea中调试这段代码时,我无法看到由HashMap数据结构创建的链表,而且它正在创建两个bucket,而不是一个,尽管hashcode对于
s1
s2
是相同的。请您澄清一下这一点好吗?

默认情况下IDEA简化了地图视图。要查看所有内部字段,您需要在map对象上单击鼠标右键
,然后
查看为
->
对象
,然后对
HashMap$Node
对象执行相同操作

关于
大小,默认情况下它有16个存储桶:


java.util.HashMap#DEFAULT_INITIAL_CAPACITY=1您需要做三件事。
这不是直截了当的,我花了一段时间才弄明白,因为以前没有人回答过

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

现在您应该看到该表中的列表

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

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

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


我希望这有帮助。

HashMap是否使用链表方法处理冲突?我认为它在Java8和更新版本中使用了开放寻址,并回退到树结构?你看到了什么可观察到的行为?@DanielPryden在某些情况下,它会切换到一棵树,但首先是一个链表。我仍然无法在对象视图中看到散列和下一个值。我正在使用IntelliJIdea Community 2018.1版本。是否可以在默认情况下将地图显示为对象,而无需右键单击它@阿尔曼, 是的,在
设置
|
生成、执行、部署
|
调试器
|
数据视图
|
Java
中,需要取消选中
为集合类启用备用视图
您还需要取消选择“为集合类启用备用视图”。