一般大家都知道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(): 在實現中采用鏈表數據結構。插入和刪除速度快,訪問速度慢。
