不要設(shè)置hashMap的capacity為expectedSize抽米,例如以下寫法是錯誤的:
Map<String,String> map = new HashMap<String,String>(3);
hashMap在達(dá)到總?cè)萘康?code>0.75時會進(jìn)行擴(kuò)容诡宗,如果你不知道如何設(shè)置玄糟,請使用guava的API:
Maps.newHashMapWithExpectedSize(int expectedSize);
摘取了其中的默認(rèn)實(shí)現(xiàn):
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
來進(jìn)行計(jì)算挤渐。