美文网首页
hashMap初始化容量设置不当

hashMap初始化容量设置不当

作者: 不二不二熊 | 来源:发表于2020-09-29 00:00 被阅读0次
不要设置hashMap的capacity为expectedSize,例如以下写法是错误的:
Map<String,String> map = new HashMap<String,String>(3);

hashMap在达到总容量的0.75时会进行扩容,如果你不知道如何设置,请使用guava的API:

Maps.newHashMapWithExpectedSize(int expectedSize);

摘取了其中的默认实现:

static int capacity(int expectedSize) {
        if (expectedSize < 3) {
            CollectPreconditions.checkNonnegative(expectedSize, "expectedSize");
            return expectedSize + 1;
        } else {
            return expectedSize < 1073741824 ? (int)((float)expectedSize / 0.75F + 1.0F) : 2147483647;
        }
    }

因此,如果你不想引入guavaAPI,请使用 expectedSize / 0.75 + 1.0 来进行计算。

相关文章

网友评论

      本文标题:hashMap初始化容量设置不当

      本文链接:https://www.haomeiwen.com/subject/hirsuktx.html