ArrayList&LinkedList

一般來說,ArrayList 和 LinkedList 具體使用哪一個以下這些我總結的使用規則:

1:事先能預知元素數量時,應優先選擇 ArrayList,並且在構造中進行初始化

2:事先不能預知元素數量時,根據不同的迭代需要選擇 ArrayList 或者 LinkedList

3:如果有很多的 remove 操作時,應優先選擇 LinkedList

4:需要順序迭代,也就是從第一個元素開始一個一個地訪問到最後一個時,應優先選擇 LinkedList

5:需要隨機訪問,也就是使用 get(int) 方法取任意下標訪問時,應優先選擇 ArrayList,LinkedList 如果在隨機訪問時的效率肯定是比不過 ArrayList 的,對於隨機訪問的複雜度 LinkedList 的效率是 O(N),而 ArrayList 只有 O(1)。 如果使用 remove(int) 方法來移除的話,ArrayList 遠比 LinkedList 要快很多。但是,如果使用 remove(Object) 這個方法的話,ArrayList 和 LinkedList 都必須進行全容器的搜索,但由於 ArrayList 在每次 remove Object 時需要使用 System.arraycopy 移動內部數組,而 LinkedList 沒有這個操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章