Java hashmap最大大小为5770?

问题描述 投票:3回答:2

我今天正在测试一些文件/配置文件传输的东西。我使用了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"));
}

这就是我用来抓住播放器及其“组”的东西。

java hashmap
2个回答
9
投票

HashMap不受限制,您的问题可能是您有重复的键。。

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

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

11
投票

HashMap不受限制,前提是要增加负载系数。

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

© www.soinside.com 2019 - 2024. All rights reserved.