Java hashmap最大大小为5770?

时间:2014-09-01 16:25:37

标签: java hashmap

我今天正在测试一些文件/配置文件。我使用HashMap来存储玩家名称和该个人资料的值。但是我注意到我的hashmap的大小只有5770。为什么这样,我该如何解决?

HashMap<String, String> temp = new HashMap<String, String>(); for(String s : dataFile.getConfigurationSection("users").getKeys(false)) { temp.put(s, dataFile.getString("users." + s + ".group")); }

这就是我用来抓住玩家及其“团队”的原因。

2 个答案:

答案 0 :(得分:10)

HashMap不受限制,只要加载因子就会增加。

在Sun的JVM中,HashMap使用一个2的幂的数组。数组大小允许的最大2的幂是2^30。在HashMap尝试将其大小加倍到2 ^ 31(它不能做到)之前,你可以拥有的最大数量的元素是(2^30 * loadFactor)或默认加载因子大约7亿。

答案 1 :(得分:8)

HashMap不受限制,您的问题可能是你有重复的密钥..

我会在将密钥放入地图之前检查密钥是否已经包含在内:

if(temp.containsKey(s)){
 System.out.println("Erasing key "+s+" val "+temp.get(s));
}
temp.put(s, dataFile.getString("users." + s + ".group"));