我的簡單 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條經驗 獲得超22個贊
默認情況下,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
提交
取消