Vector、ArrayList、LinkedList、HashMap、TreeMap、HashTable 區別

Vector和ArrayList

1、vector是線程同步的,所以他也是線程安全的,而ArrayList是線程異步的,是不安全的。如果不考慮到線程的安全因素,一般用ArrayList效率較高。

2、如果集合中的元素的數目大於目前集合數組的長度時,Vector增長率爲目前數組長度的100%,而ArrayList增長率爲目前數組長度的50%.如果在集合中使用數據量比較大的數據,用vector有一定的優勢。

3、如果查找一個制定位置的數據,vector和ArrayList使用的時間是相同的,都是0(1),這個時候使用vector和ArrayList都可以。而如果移動一個指定位置的數據花費的時間爲0(n-i)n爲總長度,這個時候就應該考慮使用LinkList,因爲它移動一個指定位置的數據所花費的時間爲0(1),而查找一個指定位置的數據時花費的時間爲0(i)。

ArrayList和Vector是採用數組方式存儲數據,此數組元素數大於實際存儲的數據以便增加和插入元素,都允許直接序號索引元素,但是插入數據要設計到數組元素的移動等內存操作,所以索引數據快插入數據慢,Vector由於使用了synchronized方法(線程安全)所以性能上比ArrayList要差,LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行向前或者向後遍歷,但是插入數據時只需要記錄本想的前後項即可,所以插入速度比較快!


ArrayList和LinkedList

1、ArrayList是實現了基本動態數據機構,LinkedList基本鏈表的數據結構。

2、對於隨機訪問get和set,ArrayList絕對優於LinkedList,因爲LinkedList是要移動指針。

3、對於新增和刪除操作add和remove,LinkedList比較佔優勢,因爲ArrayList要移動數據。

    這一點要看實際情況的。若只對單條數據插入或刪除,ArrayList的速度反而由於LinkedList。但是批量隨機插入和刪除數據,LinkedList的速度大大優於ArrayList,因爲ArrayList每插入一條數據,都要移動插入點及之後的所有數據。


HashMap和TreeMap

1、HashMap通過hashcode對其內容進行快速查找,而TreeMap中所有的元素都保持着某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。

HashMap中元素的排列順序是不固定的)。

        2、  HashMap通過hashcode對其內容進行快速查找,而TreeMap中所有的元素都保持着某種固定的順序,如果你需要得到一個有序的結果你就應該 使用TreeMap(HashMap中元素的排列順序是不固定的)。集合框架”提供兩種常規的Map實現:HashMap和TreeMap (TreeMap實現SortedMap接口)。

         3、在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那麼TreeMap會更好。使用HashMap要求添加的鍵類明確定義了hashCode()和 equals()的實現。  這個TreeMap沒有調優選項,因爲該樹總處於平衡狀態。

      結過研究,在原作

發佈了68 篇原創文章 · 獲贊 1 · 訪問量 5931
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章