亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

分配的 Java HashMap 大小

分配的 Java HashMap 大小

慕田峪4524236 2022-06-30 10:39:07
Java Hash Map 有一個 size() 方法,它反映了在 Hash Map 中設置了多少元素。我很想知道哈希圖的實際大小是多少。我嘗試了不同的方法,但找不到正確的方法。我將初始容量設置為 16HashMap hm = new HashMap(16);    for(int i=0;i<100;++i){        System.out.println(hm.size());        UUID uuid = UUID.randomUUID();        hm.pet(uuid ,null);    }當我添加這個大小可以增加的值時,我如何檢查實際分配的大小?
查看完整描述

2 回答

?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

您可以使用Reflection來檢查地圖的實際分配大?。ㄍ按笮。?。


HashMap<String, Integer> m = new HashMap<>();

m.put("Abhi", 101);

m.put("John", 102);


System.out.println(m.size());   // This will print 2


Field tableField = HashMap.class.getDeclaredField("table");

tableField.setAccessible(true);

Object[] table = (Object[]) tableField.get(m);


System.out.println(table.length);  // This will print 16


查看完整回答
反對 回復 2022-06-30
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

Hash Map 的實際大小是多少

我假設你問的是容量。容量是保存 s 的桶的數組的長度HashMap。初始容量默認為 16。

capacity方法不公開,但您可以根據當前size、初始容量和負載系數計算當前容量。

如果使用默認值(例如,HashMap使用無參數構造函數創建時),初始容量為 16,默認負載因子為 0.75。這意味著一旦大小達到 16 * 0.75 == 12,容量將翻倍至 32。一旦大小達到 32 * 0.75 == 24,容量將翻倍至 64。

如果您將不同的初始容量和/或負載因子傳遞給構造函數,則計算將受到相應影響。


查看完整回答
反對 回復 2022-06-30
  • 2 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號