我好奇,我读了documentation:
容量是哈希表中的桶数...负载因子是在自动增加容量之前允许哈希表获取的完整程度的度量。当哈希表中的条目数超过加载因子和当前容量的乘积时,哈希表将被重新哈希(即,重建内部数据结构),以便哈希表具有大约两倍的桶数。 / p>
有没有办法在t时刻知道hashmap的容量(桶的数量)?
答案 0 :(得分:15)
你需要反思
HashMap m = new HashMap();
Field tableField = HashMap.class.getDeclaredField("table");
tableField.setAccessible(true);
Object[] table = (Object[]) tableField.get(m);
System.out.println(table == null ? 0 : table.length);
答案 1 :(得分:5)
如果您查看online API,您会发现没有任何公开可用的方法可以告诉您这一点。总是有反思,但我不建议这样做。
在任何情况下,这都可以被视为在大多数情况下您不应该依赖的实施细节。
答案 2 :(得分:1)
HashMap
中没有这样的公开方法。
您可以在IDE中使用调试模式来观看HashMap.table
。
plus:正如Sanjeev评论的那样,反思是一种选择。