標籤:contains 數組 特徵 bsp ted 優勢 hash 線性 int
一般大家都知道ArrayList和LinkedList的大致區別:
1.ArrayList是實現了基於動態數組的資料結構,LinkedList基於鏈表的資料結構。
2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
3.對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。
這一點要看實際情況的。若只對單條資料插入或刪除,ArrayList的速度反而優於LinkedList。但若是批量隨機的插入刪除資料,LinkedList的速度大大優於ArrayList. 因為ArrayList每插入一條資料,要移動插入點及之後的所有資料。
4.尋找操作indexOf,lastIndexOf,contains等,兩者差不多。
5.隨機尋找指定節點的操作get,ArrayList速度要快於LinkedList.
Set是最簡單的一種集合。集合中的對象不按特定的方式排序,並且沒有重複對象。 Set介面主要實現了兩個實作類別:
- HashSet: HashSet類按照雜湊演算法來存取集合中的對象,存取速度比較快
- TreeSet :TreeSet類實現了SortedSet介面,能夠對集合中的對象進行排序。
Set 的用法:存放的是對象的引用,沒有重複對象
List的特徵是其元素以線性方式儲存,集合中可以存放重複對象。
List介面主要實作類別包括:
- ArrayList() : 代表長度可以改變得數組。可以對元素進行隨機的訪問,向ArrayList()中插入與刪除元素的速度慢。
- LinkedList(): 在實現中採用鏈表資料結構。插入和刪除速度快,訪問速度慢。
對於List的隨機訪問來說,就是只隨機來檢索位於特定位置的元素。 List 的 get(int index) 方法放回集合中由參數index指定的索引位置的對象,下標從“0” 開始。最基本的兩種檢索集合中的所有對象的方法:
JAVA裡幾種資料結構的優點和缺點