hashMap初始化容量设置不当

2020-09-29  本文已影响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 来进行计算。

上一篇下一篇

猜你喜欢

热点阅读