的关键点resize是重新计算newCap和newThr。然而,在源代码中,有两种不同的计算方式newThr。
首先,当
oldCap > DEFAULT_INITIAL_CAPACITY &&
oldCap < MAXIMUM_CAPACITY &&
newCap = < MAXIMUM_CAPACITY
发生时,它使用:
// double the old threshold
newThr = oldThr << 1;
第二
// newCap * load factor
newThr = (newCap < MAXIMUM_CAPACITY && ft < (float)MAXIMUM_CAPACITY ?
(int)ft : Integer.MAX_VALUE);
为什么我们需要两种不同的方法?第一个条件是什么意思?
泛舟湖上清波郎朗
相关分类