的關鍵點resize是重新計算newCap和newThr。然而,在源代碼中,有兩種不同的計算方式newThr。首先,當oldCap > DEFAULT_INITIAL_CAPACITY && oldCap < MAXIMUM_CAPACITY && newCap = < MAXIMUM_CAPACITY發生時,它使用:// double the old thresholdnewThr = oldThr << 1; 第二// newCap * load factornewThr = (newCap < MAXIMUM_CAPACITY && ft < (float)MAXIMUM_CAPACITY ? (int)ft : Integer.MAX_VALUE);為什么我們需要兩種不同的方法?第一個條件是什么意思?
1 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
本質上,如果舊閾值非零,則新閾值將設置為其大小的兩倍。否則,如果舊閾值為零(無論這意味著什么,在代碼摘錄中不可見),我們需要其他方法來計算新閾值,因此我們進行第二次計算。就那么簡單?
添加回答
舉報
0/150
提交
取消