通常的構造函數ArrayList是:ArrayList<?> list = new ArrayList<>();但是,還有一個帶有初始容量參數的重載構造函數:ArrayList<?> list = new ArrayList<>(20);ArrayList當我們可以隨意添加初始容量時,為什么創建初始容量有用呢?
4 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
因為ArrayList是動態調整大小的數組數據結構,所以它被實現為具有初始(默認)固定大小的數組。填充完畢后,該數組將擴展為兩倍大小的數組。此操作成本高昂,因此您需要盡可能少的操作。
因此,如果您知道上限為20個項目,則創建初始長度為20的數組比使用默認值(例如15)然后將其調整大小為15*2 = 30僅使用20(同時浪費擴展周期)更好。
PS-正如AmitG所說,擴展因子是特定于實現的(在這種情況下(oldCapacity * 3)/2 + 1)

楊魅力
TA貢獻1811條經驗 獲得超6個贊
因為ArrayList是動態調整大小的數組數據結構,所以它被實現為具有初始(默認)固定大小的數組。填充完畢后,該數組將擴展為兩倍大小的數組。此操作成本高昂,因此您需要盡可能少的操作。
因此,如果您知道上限為20個項目,則創建初始長度為20的數組比使用默認值(例如15)然后將其調整大小為15*2 = 30僅使用20(同時浪費擴展周期)更好。
PS-正如AmitG所說,擴展因子是特定于實現的(在這種情況下(oldCapacity * 3)/2 + 1)
添加回答
舉報
0/150
提交
取消