我今天正在测试一些文件/配置文件。我使用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"));
}
这就是我用来抓住玩家及其“团队”的原因。
答案 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"));