我今天正在测试一些文件/配置文件传输的东西。我使用了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"));
}
这就是我用来抓住播放器及其“组”的东西。
HashMap不受限制,您的问题可能是您有重复的键。。
在将其放入地图之前,我会检查密钥是否已包含:
if(temp.containsKey(s)){
System.out.println("Erasing key "+s+" val "+temp.get(s));
}
temp.put(s, dataFile.getString("users." + s + ".group"));
HashMap不受限制,前提是要增加负载系数。
在Sun的JVM中,HashMap
使用2的幂的数组。数组大小允许的最大2的幂是2^30
。在HashMap尝试将其大小增加一倍至2 ^ 31(它不能执行)之前,您可以拥有的最大元素数是(2^30 * loadFactor
)或默认负载因子约为7亿。