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

TA贡献1843条经验 获得超7个赞
Hash Map 的实际大小是多少
我假设你问的是容量。容量是保存 s 的桶的数组的长度HashMap
。初始容量默认为 16。
该capacity
方法不公开,但您可以根据当前size
、初始容量和负载系数计算当前容量。
如果使用默认值(例如,HashMap
使用无参数构造函数创建时),初始容量为 16,默认负载因子为 0.75。这意味着一旦大小达到 16 * 0.75 == 12,容量将翻倍至 32。一旦大小达到 32 * 0.75 == 24,容量将翻倍至 64。
如果您将不同的初始容量和/或负载因子传递给构造函数,则计算将受到相应影响。
添加回答
举报