集合是我們在java程式設計中使用非常廣泛的,它就像大海,海納百川,像萬能容器,盛裝萬物,而且這個大海,萬能容器還可以無限變大(如果條件允許)。當這個海、容器的量變得非常大的時候,它的初始容量就會顯得很重要了,因為挖海、擴容是需要消耗大量的人力物力财力的。同樣的道理,collection的初始容量也顯得異常重要。是以:對于已知的情景,請為集合指定初始容量。
上面代碼兩個list都是插入1000000條資料,隻不過list1沒有沒有申請初始化容量,而list2初始化容量1000000。那運作結果如下:
list2 time:921
如果你想學習java可以來這個群,首先是二二零,中間是一四二,最後是九零六,裡面有大量的學習資料可以下載下傳。
從上面的運作結果我們可以看出list2的速度是list1的兩倍左右。在前面lz就提過,arraylist的擴容機制是比較消耗資源的。我們先看arraylist的add方法:
arraylist每次新增一個元素,就會檢測arraylist的目前容量是否已經到達臨界點,如果到達臨界點則會擴容1.5倍。然而arraylist的擴容以及數組的拷貝生成新的數組是相當耗資源的。是以若我們事先已知集合的使用場景,知道集合的大概範圍,我們最好是指定初始化容量,這樣對資源的利用會更加好,尤其是大資料量的前提下,效率的提升和資源的利用會顯得更加具有優勢。