这是我的情况。我正在使用两个 java.util.HashMap 将一些常用数据存储在运行在 Tomcat 上的 Java Web 应用程序中。我知道每个 Hashmap 的确切条目数。键将分别是字符串和整数。
我的问题是,设置初始容量和负载因子的最佳方法是什么?
我是否应该将容量设置为等于它将拥有的元素数量并将负载容量设置为 1.0?我希望在不使用太多内存的情况下获得绝对最佳的性能。但是,我担心该表不会以最佳方式填充。使用所需的确切大小的表,是否不会发生键冲突,导致(通常很短)扫描以找到正确的元素?
假设(这是一个延伸)散列函数是整数键的简单 mod 5,这是否意味着键 5、10、15 会命中同一个桶,然后导致寻找填充旁边的桶他们?更大的初始容量会提高性能吗?
此外,如果有比哈希图更好的数据结构,我也完全愿意接受。