如何知道/获取hashmap的容量?

时间:2014-05-13 09:52:04

标签: java hashmap

我好奇,我读了documentation

  

容量是哈希表中的桶数...负载因子是在自动增加容量之前允许哈希表获取的完整程度的度量。当哈希表中的条目数超过加载因子和当前容量的乘积时,哈希表将被重新哈希(即,重建内部数据结构),以便哈希表具有大约两倍的桶数。 / p>

有没有办法在t时刻知道hashmap的容量(桶的数量)?

3 个答案:

答案 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评论的那样,反思是一种选择。